home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magnum One
/
Magnum One (Mid-American Digital) (Disc Manufacturing).iso
/
d1
/
marxmenu.arc
/
MARXMENU.DOC
< prev
next >
Wrap
Text File
|
1991-03-27
|
270KB
|
7,236 lines
===================================================================
<*> Computer Tyme MarxMenu <*>
Reference Manual
Copyright 1989 - 1991 by Marc Perkel
All Rights Reserved * Version 2.23 * Release Date: 01-22-91
Computer Tyme * 411 North Sherman Suite 300 * Springfield Mo. 65802
(417) 866-1222 voice * (417) 866-1665 bbs
Fax: (417) 866-0135
CompuServe 76505,1120
===================================================================
Computer Tyme MarxMenu * Table of Contents Page 1
_______________________________________________________________
Copyright ......................................... 1
License ........................................... 1
Warranty .......................................... 1
Acknowledgments ................................... 2
Trademarks ........................................ 2
The MarxMenu Name ................................. 2
Technical Support ................................. 3
Overview of the MarxMenu System ................... 3
-- What MarxMenu Does ............................. 5
-- For the POWER User ............................. 6
Installation ...................................... 7
The MARX.BAT File ................................. 8
-- DROPTO.BAT ..................................... 10
-- Support for early DOS versions ................. 11
-- About Environment Variables .................... 12
-- Dealing with Multiple DOS Shells ............... 13
-- MarxMenu and TSR Control ....................... 14
Network Users ..................................... 14
-- Novell Users ................................... 15
---- The Novell Menu Translator ................... 16
---- Logging out under Menu Control ............... 16
---- Logging in with MarxMenu ..................... 17
------ The CONFIG.SYS File ........................ 17
------ The AUTOEXEC.BAT File ...................... 18
------ Using a Menu File to Log In ................ 19
---- Novell Semaphores ............................ 20
Running a MarxMenu ................................ 21
Customizing MarxMenu Sample Files ................. 21
Menu Analysis ..................................... 22
Onkey Statements .................................. 23
Popup Menus ....................................... 23
The Console ....................................... 24
Repositioning the Top Window ...................... 25
Mouse Support ..................................... 25
Starting off the Easy Way ......................... 26
About Variables ................................... 26
-- Real Numbers ................................... 27
-- Local Variables ................................ 28
-- Passing Parameters to Procedures ............... 28
About Constants ................................... 30
About Arrays ...................................... 30
About Qualifiers .................................. 31
Comments in Menu Files ............................ 32
The MarxMenu Compiler ............................. 33
Compiler Compatibility ............................ 33
A word about DOS versions ......................... 34
A word about BUGS ................................. 34
Tips From the Master .............................. 35
-- Computers do Simple Tasks ...................... 35
-- Complex Tasks are made of Simple Tasks ......... 35
-- Learning Good Programming Habits ............... 36
Computer Tyme MarxMenu * Table of Contents Page 2
_______________________________________________________________
-- Use Long Names ................................. 36
-- Use Comments Liberally ......................... 38
-- Indent Your code ............................... 39
-- For Duplicate Tasks, Use Procedures ............ 39
-- Don't Program Yourself into a Corner ........... 40
A word to Writers and Reviewers ................... 40
Using MarxHelp .................................... 41
Printing the Example Files ........................ 42
MarxMenu Commands ................................. 42
-- | .............................................. 42
-- ( .............................................. 43
-- ) .............................................. 43
-- * .............................................. 43
-- + .............................................. 43
-- - .............................................. 43
-- / .............................................. 43
-- < .............................................. 43
-- <= ............................................. 44
-- <> ............................................. 44
-- = .............................................. 44
-- > .............................................. 44
-- >= ............................................. 44
-- %MenuFileName .................................. 44
-- Abs ............................................ 44
-- Alias .......................................... 45
-- And ............................................ 45
-- Apr ............................................ 45
-- ArcTan ......................................... 45
-- Aug ............................................ 45
-- Bat ............................................ 46
-- BatFileName .................................... 46
-- BigShadow ...................................... 46
-- Black .......................................... 46
-- BlankMessage ................................... 46
-- BlankTime ...................................... 46
-- BlockBox ....................................... 47
-- Blue ........................................... 47
-- BoxBorderColor ................................. 47
-- BoxHeader ...................................... 47
-- BoxHeaderLeft .................................. 47
-- BoxHeaderRight ................................. 48
-- BoxHeaderColor ................................. 48
-- BoxFooter ...................................... 48
-- BoxFooterLeft .................................. 48
-- BoxFooterRight ................................. 49
-- BoxInsideColor ................................. 49
-- Brown .......................................... 49
-- BW40 ........................................... 49
-- BW80 ........................................... 49
-- CapsColor ...................................... 49
-- CapsLock ....................................... 49
-- Chain .......................................... 50
Computer Tyme MarxMenu * Table of Contents Page 3
_______________________________________________________________
-- Char ........................................... 50
-- ChDir .......................................... 50
-- CleanFileName .................................. 50
-- ClearLine ...................................... 50
-- ClearScreen .................................... 51
-- ClearScreenFirst ............................... 51
-- ClearScreenOnExit .............................. 51
-- ClockColor ..................................... 51
-- ClockMode ...................................... 51
-- ClockPos ....................................... 52
-- ClosePrinter ................................... 52
-- ClusterSize .................................... 53
-- CmdLine ........................................ 53
-- CO40 ........................................... 53
-- CO80 ........................................... 53
-- ColorScreen .................................... 53
-- Comment ........................................ 54
-- Console ........................................ 54
-- ConsoleBorderColor ............................. 54
-- ConsoleHeaderColor ............................. 54
-- ConsoleInsideColor ............................. 54
-- ConsolePos ..................................... 55
-- Const .......................................... 55
-- Cos ............................................ 55
-- CurrentEnvironment ............................. 55
-- CurrentWindow .................................. 55
-- Cursor ......................................... 55
-- CustomBox ...................................... 56
-- Cyan ........................................... 56
-- DateString ..................................... 56
-- Day ............................................ 56
-- DayOfWeek ...................................... 56
-- Dec ............................................ 56
-- Delete ......................................... 57
-- DelFile ........................................ 57
-- Dispose ........................................ 58
-- DosVersion ..................................... 58
-- DosVersionString ............................... 58
-- DosWindow ...................................... 58
-- DoubleLineBox .................................. 58
-- DrawBox ........................................ 59
-- Drives ......................................... 59
-- DvAppNumber .................................... 59
-- DvFrame ........................................ 59
-- DvFreeze ....................................... 59
-- DvHide ......................................... 60
-- DvKillTask ..................................... 60
-- DvLastHandle ................................... 60
-- DvLoaded ....................................... 60
-- DvMoveWindow ................................... 60
-- DvMyHandle ..................................... 60
-- DvPifExecute ................................... 61
Computer Tyme MarxMenu * Table of Contents Page 4
_______________________________________________________________
-- DvResizeWindow ................................. 61
-- DvSetBottom .................................... 61
-- DvSetTop ....................................... 61
-- DvUnFreeze ..................................... 62
-- DvUnHide ....................................... 62
-- Else ........................................... 62
-- EndComment ..................................... 62
-- Endif .......................................... 62
-- EndLoop ........................................ 62
-- EndOfFile ...................................... 63
-- EndProc ........................................ 63
-- EndWhile ....................................... 63
-- EnvFree ........................................ 63
-- EnvSize ........................................ 63
-- EraseTopWindow ................................. 63
-- Execute ........................................ 64
-- ExistDir ....................................... 64
-- ExistFile ...................................... 65
-- ExistOnPath .................................... 65
-- ExitCode ....................................... 65
-- ExitMenu ....................................... 65
-- Exp ............................................ 65
-- Explode ........................................ 65
-- ExplodeDelay ................................... 65
-- False .......................................... 66
-- Feb ............................................ 66
-- FileAppend ..................................... 66
-- FileAssign ..................................... 66
-- FileAttr ....................................... 66
-- FileClose ...................................... 66
-- FileCreate ..................................... 66
-- FileDate ....................................... 67
-- FileFlush ...................................... 67
-- FileLog ........................................ 67
-- FileOpen ....................................... 67
-- FilePos ........................................ 67
-- FileReadln ..................................... 67
-- FileRename ..................................... 68
-- FileResult ..................................... 68
-- FileSeek ....................................... 68
-- FileSize ....................................... 68
-- FileWrite ...................................... 68
-- FileWriteln .................................... 68
-- FixPath ........................................ 68
-- Floppies ....................................... 68
-- ForceExplosion ................................. 69
-- ForceExtension ................................. 69
-- Fraction ....................................... 69
-- FreeDiskSpace .................................. 69
-- FreeEms ........................................ 69
-- FreeMemory ..................................... 69
-- Fri ............................................ 69
Computer Tyme MarxMenu * Table of Contents Page 5
_______________________________________________________________
-- GotoXY ......................................... 70
-- Green .......................................... 70
-- Grey ........................................... 70
-- Hour ........................................... 70
-- Hundredth ...................................... 70
-- If ............................................. 70
-- InactiveBox .................................... 71
-- InactiveBoxColor ............................... 71
-- Include ........................................ 71
-- InputString .................................... 72
-- Insert ......................................... 72
-- InsertMode ..................................... 72
-- Int ............................................ 72
-- Integer ........................................ 72
-- InverseColor ................................... 72
-- Jan ............................................ 73
-- Jul ............................................ 73
-- Jun ............................................ 73
-- Jump ........................................... 73
-- KbdReady ....................................... 73
-- KeySave ........................................ 73
-- KillMusic ...................................... 73
-- LastKey ........................................ 74
-- LBlue .......................................... 74
-- LCyan .......................................... 74
-- Left ........................................... 74
-- Length ......................................... 74
-- LGreen ......................................... 74
-- LGrey .......................................... 74
-- LMag ........................................... 74
-- LMagenta ....................................... 75
-- Ln ............................................. 75
-- Loc ............................................ 75
-- LockWord ....................................... 75
-- Loop ........................................... 75
-- LoopIndex ...................................... 76
-- LoopLimit ...................................... 76
-- LRed ........................................... 76
-- Mag ............................................ 76
-- Magenta ........................................ 76
-- Mar ............................................ 76
-- MarxVersion .................................... 76
-- MasterEnvironment .............................. 77
-- Max ............................................ 77
-- May ............................................ 77
-- Mem ............................................ 77
-- MemSize ........................................ 77
-- MemW ........................................... 77
-- MenuKeyBuffer .................................. 77
-- Mid ............................................ 78
-- Min ............................................ 78
-- MinorDosVersion ................................ 78
Computer Tyme MarxMenu * Table of Contents Page 6
_______________________________________________________________
-- Minute ......................................... 78
-- Mod ............................................ 78
-- ModifyPath ..................................... 78
-- Mon ............................................ 78
-- Mono ........................................... 79
-- Month .......................................... 79
-- Mouse .......................................... 79
-- MouseHorizontal ................................ 79
-- MouseVertical .................................. 79
-- MoveWindow ..................................... 80
-- MxCmd .......................................... 80
-- NetworkVersion ................................. 80
-- NextWord ....................................... 80
-- No ............................................. 80
-- NoBoxBorder .................................... 81
-- NoExit ......................................... 81
-- Not ............................................ 81
-- NotesLeft ...................................... 81
-- NotesPlayed .................................... 81
-- Nov ............................................ 81
-- NovCloseSemaphore .............................. 81
-- NovConnection .................................. 81
-- NovConsoleOperator ............................. 82
-- NovDefaultServer ............................... 82
-- NovGroupMembers ................................ 82
-- NovInGroup ..................................... 82
-- NovLogin ....................................... 82
-- NovLoginName ................................... 82
-- NovLogout ...................................... 83
-- NovMapDrive .................................... 83
-- NovMyLoginName ................................. 83
-- NovMyPassword .................................. 83
-- NovOpenSemaphore ............................... 83
-- NovPreferredServer ............................. 83
-- NovPrimaryServer ............................... 83
-- NovReadGroups .................................. 84
-- NovReadSecurityEquals .......................... 84
-- NovResult ...................................... 84
-- NovSemaphoreTimeOut ............................ 84
-- NovSemaphoreUsers .............................. 84
-- NovSemaphoreValue .............................. 84
-- NovServers ..................................... 84
-- NovSetPreferredServer .......................... 84
-- NovSignalSemaphore ............................. 85
-- NovStationAddress .............................. 85
-- NovUserInGroup ................................. 85
-- NovWaitOnSemaphore ............................. 85
-- NumberOfElements ............................... 85
-- NumLock ........................................ 85
-- Oct ............................................ 85
-- Off ............................................ 85
-- On ............................................. 86
Computer Tyme MarxMenu * Table of Contents Page 7
_______________________________________________________________
-- OnKey .......................................... 86
-- OnScreenOnly ................................... 86
-- OpenPrinter .................................... 87
-- OptionSwitch ................................... 87
-- Or ............................................. 87
-- Ord ............................................ 87
-- Overlay ........................................ 88
-- ParallelPorts .................................. 88
-- ParamStr ....................................... 88
-- ParentEnvironment .............................. 88
-- Password ....................................... 88
-- Path ........................................... 89
-- PauseAfterExecute .............................. 89
-- Pi ............................................. 89
-- PickFile ....................................... 89
-- PickMany ....................................... 90
-- PickOne ........................................ 90
-- PickPosition ................................... 90
-- Port ........................................... 90
-- Pos ............................................ 90
-- Power .......................................... 90
-- Pred ........................................... 91
-- Print .......................................... 91
-- PrinterName .................................... 91
-- Println ........................................ 91
-- Procedure ...................................... 91
-- PullMenu ....................................... 92
-- Qualifier ...................................... 92
-- Random ......................................... 92
-- ReadEnv ........................................ 92
-- ReadEnvironment ................................ 92
-- ReadKey ........................................ 93
-- Readln ......................................... 93
-- ReadTextFile ................................... 93
-- Real ........................................... 94
-- Reboot ......................................... 94
-- Red ............................................ 94
-- ReleaseDate .................................... 94
-- Repeat ......................................... 94
-- ResizeWindow ................................... 95
-- Return ......................................... 95
-- ReturnCode ..................................... 95
-- Right .......................................... 95
-- RollWindow ..................................... 96
-- Run ............................................ 96
-- Sat ............................................ 97
-- SavePosition ................................... 97
-- ScreenHeight ................................... 97
-- ScreenWidth .................................... 97
-- ScrollLock ..................................... 97
-- ScrollMove ..................................... 97
-- Second ......................................... 97
Computer Tyme MarxMenu * Table of Contents Page 8
_______________________________________________________________
-- Security ....................................... 98
-- SelectPath ..................................... 98
-- Sep ............................................ 98
-- SerialPorts .................................... 98
-- SetArraySize ................................... 98
-- SetEnv ......................................... 99
-- SetTopWindow ................................... 99
-- Shadow ......................................... 99
-- ShadowColor .................................... 99
-- ShadowPosition ................................. 100
-- Shared ......................................... 100
-- ShellEnvironment ............................... 100
-- Shl ............................................ 100
-- Shr ............................................ 100
-- Sin ............................................ 101
-- SingleLineBox .................................. 101
-- SmallShadow .................................... 101
-- Sound .......................................... 101
-- Sqr ............................................ 101
-- StandardIO ..................................... 101
-- Str ............................................ 101
-- StuffAKey ...................................... 102
-- StuffKBD ....................................... 102
-- StuffKeyboardNow ............................... 102
-- Succ ........................................... 102
-- Suggest ........................................ 102
-- Sun ............................................ 102
-- TextBackground ................................. 103
-- TextColor ...................................... 103
-- TextMode ....................................... 103
-- TextPos ........................................ 103
-- TextSeek ....................................... 103
-- Then ........................................... 103
-- Thu ............................................ 104
-- Timer .......................................... 104
-- TimeString ..................................... 104
-- Tone ........................................... 104
-- TotalDiskSpace ................................. 104
-- TotalEms ....................................... 104
-- Trim ........................................... 105
-- True ........................................... 105
-- Tue ............................................ 105
-- UniqueFileName ................................. 105
-- Until .......................................... 105
-- UpperCase ...................................... 105
-- UpperCaseOnly .................................. 105
-- UseArrows ...................................... 106
-- UseCommand ..................................... 106
-- UsedDiskSpace .................................. 106
-- Value .......................................... 107
-- Var ............................................ 107
-- VideoMode ...................................... 107
Computer Tyme MarxMenu * Table of Contents Page 9
_______________________________________________________________
-- VideoPage ...................................... 107
-- ViewTextFile ................................... 107
-- Volume ......................................... 107
-- Wait ........................................... 107
-- WaitOrKbdReady ................................. 107
-- Wed ............................................ 107
-- WhereX ......................................... 108
-- WhereXAbs ...................................... 108
-- WhereY ......................................... 108
-- WhereYAbs ...................................... 108
-- While .......................................... 108
-- White .......................................... 108
-- WindowHeight ................................... 108
-- WindowWidth .................................... 108
-- Write .......................................... 109
-- WriteCenter .................................... 109
-- Writeln ........................................ 109
-- WritePort ...................................... 109
-- WriteTextFile .................................. 109
-- WriteVertical .................................. 109
-- Xor ............................................ 109
-- Year ........................................... 110
-- Yellow ......................................... 110
-- Yes ............................................ 110
Command Categories ................................ 110
-- Misc Commands .................................. 110
-- Math Commands .................................. 111
-- Float Commands ................................. 112
-- String Commands ................................ 112
-- Boolean Commands ............................... 113
-- MonthName Commands ............................. 114
-- Execution Commands ............................. 114
-- Display Commands ............................... 114
-- Color Commands ................................. 116
-- Video Commands ................................. 116
-- System Commands ................................ 116
-- File Commands .................................. 117
-- Printer Commands ............................... 117
-- Environment Commands ........................... 118
-- Time Commands .................................. 118
-- Array Commands ................................. 118
-- Memory Commands ................................ 119
-- DesqView Commands .............................. 119
-- Conditional Commands ........................... 119
-- WeekDay Commands ............................... 120
-- Keyboard Commands .............................. 120
-- Music Commands ................................. 120
-- MouseControl Commands .......................... 120
-- Novell Commands ................................ 121
-- Variable Commands .............................. 121
-- String and Character Constants ................. 121
Conditional Statements ............................ 123
Computer Tyme MarxMenu Users Manual Page 1
_______________________________________________________________
COPYRIGHT COPYRIGHT COPYRIGHT
This manual is copyrighted material and all rights are reserved.
MarxMenu is a programming language which describes to the computer what
it is supposed to do. Even though some of the individual words in
MarxMenu are used in other programming languages, I claim a copyright on
the collection of words which make up the MarxMenu language. I therefore
consider it an infringement of my CopyRight to create a software product
which uses the MarxMenu language, or translates MarxMenu source code,
without purchasing a license to do so.
The combinations of definitions of commands in this manual constitute a
copyrighted work. Any publication which describes a computer language
for which the MarxMenu command set is a subset is a violation of the
copyright of this software and this written manual.
In other words, don't try to clone MarxMenu.
LICENSE AGREEMENT: LICENSE AGREEMENT: LICENSE AGREEMENT:
You are licensed to use this program on a single CPU or workstation. If
you are running on a network, you are required to license a separate
copy for each workstation or a file server license for each file server.
If you are running on a multiuser operating system such as Concurrent
DOS, you are required to license a copy for each workstation. Everyone
who uses this menu, must license a copy unless several people share the
same workstation.
This software is licensed and not sold. You may not transfer, sell,
sublease or rent this software without the written consent of Computer
Tyme. You are not allowed to distribute MarxMenu in runtime form with
software you developed unless it is in combination with a paid for copy
of MarxMenu, or you have made special arrangements with Computer Tyme to
do so.
Use of this product constitutes your acceptance of the terms and
conditions of this license and of my copyright and your agreement to
abide by them.
WARRANTY: WARRANTY: WARRANTY:
The warranty is limited to the diskettes to be machine readable for a
period of 30 days after purchase. Although we try hard to write perfect
software that has no bugs, we do not guarantee that. We also do not
guarantee that this product is fit for every purpose and we are not
liable for any damages that might occur from use of this product. This
agreement is governed by the laws of the State of Missouri.
Computer Tyme MarxMenu Users Manual Page 2
_______________________________________________________________
ACKNOWLEDGMENTS: ACKNOWLEDGMENTS: ACKNOWLEDGMENTS:
I would like to thank the following people for making this product
possible:
Joe Smith and Kevin Moore for helping write this manual. My wife Vicki
Perkel for being good to me and helping with revisions and editing.
The Computer Tyme staff for being the best employees in the world.
Borland International for writing Turbo Pascal and keeping it bug free
and well supported.
TurboPower Software for their very powerful extensions to Turbo Pascal
and their well written, well supported product.
Semware for TEdit and QEdit, their full screen editors.
All users who actually paid for this product so that we may continue to
eat.
Those of you who have pointed out bugs and made suggestions to improve
our product.
TRADEMARKS TRADEMARKS TRADEMARKS
MarxMenu, DOS ToolBox, Directory Master, and The Network Survival Kit
are trademarks of Computer Tyme.
QEdit and TEdit are trademarks of SemWare.
Lotus is a registered
trademark of Lotus Development.
Wordstar is a registered trademark of MicroPro International.
Smart Software is a trademark of Informix.
MS-DOS is a trademark of Microsoft.
Concurrent DOS and DR-DOS are trademarks of Digital Research.
Turbo Pascal is a trademark of Borland International.
OPRO and TPRO are trademarks of TurboPower Software
Netware and Novell are trademarks of Novell
DesqView and QEMM are trademarks of QuaterDeck
Created using Turbo Pascal
Copyright 1983-90 by Borland International
THE MARXMENU NAME THE MARXMENU NAME THE MARXMENU NAME
When I first wrote this program my friends referred to it as Marc's
Menu. That's where the name MarxMenu came from. It has nothing to do
with either Carl or Groucho Marx.
Computer Tyme MarxMenu Users Manual Page 3
_______________________________________________________________
TECHNICAL SUPPORT TECHNICAL SUPPORT TECHNICAL SUPPORT
Technical support for MarxMenu is provided several ways. The first is by
calling our voice line 1-417-866-1222. We would ask that you not call
the 800 number as that is for orders and ordering information only.
We have several support staff and will try to answer your questions as
quickly and efficiently as possible. We at Computer Tyme look at
technical support as an opportunity to improve our product.
We also have a 24 hour BBS system. This allows users with modems to
leave messages about support issues. There are several user uploaded
menus here and it serves as a forum for MarxMenu users to share ideas
and techniques.
Our BBS number is 1-417-866-1665. Supports 2400 baud but is 1200 baud
compatible. Use 8 bits, no parity, 1 stop bit (8N1). You will also need
to set your terminal emulation mode to ANSI or VT100.
On our BBS are additional sample menu files that other MarxMenu users
like yourself have uploaded. We encourage you to share your work with
others so that yet more MarxMenu users can benefit.
We are also available on Compuserve ID 76505,1120.
We also offer a Priority Support Service which includes regular upgrades
sent to you automatically as we come out with them. This doesn't mean
every version of MarxMenu, but every so often after making several
improvements and the product is at a stable point. The Priority Support
Service includes special access to our support BBS.
This service is for the very fierce MarxMenu user who has to have the
"Latest and Greatest" all the time.
OVERVIEW OF THE MARXMENU SYSTEM OVERVIEW OF THE MARXMENU SYSTEM OVERVIEW OF THE MARXMENU SYSTEM
MarxMenu is not just another fill-in-the-blank menu system. It is a menu
programming language and job control language. It gives you total
freedom to do whatever you want, but total freedom has a price. You will
need to know and understand how to use a text editor. This isn't
difficult if you are familiar with using a word processor. And you will
need to have a basic understanding of DOS and how batch files work.
With a text editor you can create a menu file which is a text file with
an MNU extension. Or, you can copy and then modify the text file
SAMPLE2.MNU which displays the menus you see when MarxMenu is executed.
This text file contains a set of instructions for MarxMenu to follow.
MarxMenu will then read your menu file and run the instructions.
A menu file might look as follows:
Computer Tyme MarxMenu Users Manual Page 4
_______________________________________________________________
DrawBox 31 5 18 4
UseArrows
Writeln ' W - WordStar'
Write ' L - Lotus'
OnKey 'W'
CD\WORDSTAR
WS
OnKey 'L'
CD\LOTUS
LOTUS
The above example is a fully working MarxMenu program. Just because
MarxMenu has 500 commands doesn't mean you have to use them all. The
reason there are so many commands is that people keep calling me up and
asking if I can add such and such. Most of the time I do. That's why the
manual gets behind sometimes.
The instructions must be from the vocabulary of words that MarxMenu
understands. These words make up the command list included in this
manual. They must be used precisely as the instructions in this manual
tell you to use them. This process is called programming.
I know that for many of you the word programming is a scary word. Put
your fears at ease, MarxMenu is one of the easiest programming languages
there is. It is a little harder than writing batch files and a lot
easier than Basic. It requires a working knowledge of DOS and an
understanding of writing batch files as explained in your DOS manual.
The point that I want to make is, do not let the fear of learning and
the fear of programming prevent you from learning to write your own
menus. If you have never touched a computer before and are sitting down
with your first PC, read the manuals first. Become familiar with the
MS-DOS operating system. Learn how to write batch files, make
subdirectories, copy files, format floppies, etc. If you don't
understand something, ask a friend. All of us had to learn sometime, and
there is no such thing as a stupid question.
After you have mastered some of the basic concepts of the operating
system, then learn either TEDIT or MarxEdit. These are text editors
included with your MarxMenu program. Use it to write your own batch
files. Then attempt to write your own menus by modifying the sample
menus (files with a MNU extension) which come with MarxMenu. Print these
menus and study them, referring to this manual for help on command
definitions. You do not have to completely understand them to start
making changes. Programming is a trial and error process.
Computer Tyme MarxMenu Users Manual Page 5
_______________________________________________________________
A computer, like a musical instrument, is only as good as the player.
The more you learn about it the more you'll find it can do. In fact, a
computer can help raise your effective IQ as you learn the disciplines
of logic and reason. As a hammer is a tool of the hand, enhancing your
physical strength, a computer is a tool of the mind, enhancing your
mental strength. You will learn that as you develop a relationship with
your computer, that you will be able to process information in ways you
never dreamed.
MarxMenu is an excellent learning tool. By the time you become
proficient with the menu language, you will have learned the fundamental
concepts behind the MS-DOS operating system. You will find yourself
going back and forth between this manual and the DOS manual that came
with your computer. When you master the language, you will have enough
computing skills to be a real resource in your office environment. In
this day and age, knowing how to "make the damn things work" is a key in
moving up the corporate ladder.
If you have sufficient excess income to afford a personal computer, or
are in a job that provides you with a workstation, you are smart enough
to learn this program. All it requires is that you take the time. You
can do it. It is worth your time, and you will make up the time spent in
the results you'll get. Good luck and enjoy.
WHAT MARXMENU DOES WHAT MARXMENU DOES WHAT MARXMENU DOES
So with hundreds of menus on the market, what makes this one so great.
Well, let me tell you about it. MarxMenu is a menu language rather than
a fill in the blank kind of menu. MarxMenu gives you total control of
your computer system.
It is also a job control language allowing you to program processes too
difficult to do with batch files. MarxMenu can be used to do anything
from overnight batch job processing to generating control scripts for
mainframes.
Because of it's simple syntax, MarxMenu makes an excellent teaching
language putting more programming power in the hands of the student
programmer than any other programming language.
As a menu, MarxMenu can be as simple or as complex as you want. If you
want simple, nothing is easier. If you want POWER, nothing is more
powerful. If you want to get really weird, MarxMenu can do really wierd.
So if you want the menu to remind you to go vote, MarxMenu knows when
the first Teusday after the first Monday in November on even years is.
If you are into Astrology, and you want certain menu items to appear
only if Mars is in the right place in the sky, MarxMenu can calculate
the orbit of Mars for you.
Computer Tyme MarxMenu Users Manual Page 6
_______________________________________________________________
MarxMenu can be used to program games, write running software demos and
online tutorial programs. It can be used to write testing programs. It
can be used to write custom software installation programs. It can be
used to assist other applications to make other software more network
friendly.
MarxMenu has a compiler for high speed execution. Even very large menus
come up in under 4 seconds on a 4.77mhz IBM XT on an ArcNet lan. The
compiler also provides security in that you can keep your source files
separate so no one can alter the menu files.
FOR THE POWER USER: FOR THE POWER USER: FOR THE POWER USER:
I originally wrote MarxMenu on a dare. I said that in one afternoon I
could write a better menu system than one of the most popular menu
systems. I met the challenge and then found that there is a lot of
demand for power in a menu system. Friends started asking for this and
that feature and this program has gone far beyond what I ever intended.
The demand for more features has outpaced my ability to keep up with the
documentation standards that I expect from other software packages that
I buy. Please bear with me. If you find any errors in the manual, or
bugs in the program, please let me know and I'll try to correct any
problems.
I also appreciate your suggestions for improvements. Many of the
features included are a result of requests you have made. Many of you
are using this program in ways I never dreamed.
The main design philosophy behind this product is POWER and Flexibility.
I am also committed to keeping the source code as readable as possible.
I am loyal to the concept of using NO RAM. None of MarxMenu stays
resident. Because of this I can claim that if you are having some kind
of problem, it's not the fault of MarxMenu being resident, because
MarxMenu is not resident. Also, using NO RAM allows loading of TSR's
(memory resident programs) from the menu.
For computer consultants, MarxMenu is an excellent way to make money.
You can provide your clients with professional looking menu systems
customized (by you) to fit their needs. You can provide complex menu
structures not possible with any other menu system. And, because
MarxMenu uses NO RAM, you don't have to worry about conflicts between
MarxMenu and any other software product.
Although MarxMenu is copyrighted, the program is not copy protected.
There is nothing to prevent you from making hot copies and giving them
away to all your clients. I would like to point out that when you give
away something you should be selling you lose respect from your clients
and attract those who expect you to work for free. You will make more
money if you play by the rules. My best and most profitable clients use
no hot software whatsoever. Think about it.
Computer Tyme MarxMenu Users Manual Page 7
_______________________________________________________________
INSTALLATION INSTALLATION INSTALLATION
You may wish to copy the MarxMenu system into it's own subdirectory
called MARX to keep the files better organized. However, this is not
necessary. Copy all the disks that come with MarxMenu into a directory
on your hard disk or network.
If you do put the menu system in a subdirectory, it must be path
accessible. That is, you must have a path statement in your autoexec.bat
file that includes the directory where the menu system resides. A
typical path statement might look like this:
PATH=C:\;C:\DOS;C:\MARX;
Copy all your Computer Tyme disks to the hard disk or network and type
MARXINST. When it gets done, you can run some of the sample menus by
typing MARX <menu>.
-------------------- V E R Y * I M P O R T A N T ----------------------
MarxMenu requires up to 100 bytes of free environment space. It won't
run properly without it. The way you get more environment space is to
add a SHELL command to your CONFIG.SYS file.
SHELL=COMMAND.COM /P /E:nnn
Where NNN is the number of bytes for the environment to reserve. Note
that if you are running DOS that is earlier than 3.3 then NNN is the
number of 16 byte blocks to allocate for the environment.
For DOS 3.3 or later:
SHELL=COMMAND.COM /P /E:400
For DOS earlier than 3.3:
SHELL=COMMAND.COM /P /E:25
If MarxMenu gives you an environment space error, this is where you go
to fix it.
Computer Tyme MarxMenu Users Manual Page 8
_______________________________________________________________
THE MARX.BAT FILE THE MARX.BAT FILE THE MARX.BAT FILE
In order for MarxMenu to work, a MARX.BAT file must be created. This is
done by typing MARXINST. The first thing that MARXINST does is unpack
the compressed menu files and documentation files. Then it will bring up
the installation menu.
The MARX.BAT file looks like this:
@ECHO OFF
C:\MARX\MARXMENU.EXE %1 C:\MARX
%MXCMD%
%0 %1
The first line of MARX.BAT turns the echo off. This may be changed to
ECHO ON for debugging purposes. PAUSE commands can be inserted to debug
a menu. This allows you to see what's going on.
The second line of MARX.BAT runs MARXMENU.EXE. The second parameter %1
is the name of the menu file to run. The third parameter C:\MARX tells
MarxMenu to use the C:\MARX directory for creating temporary batch
files. This can be changed to any other directory you prefer.
When the user selects a program to run, MarxMenu writes a temporary
batch file which contains within it the commands to run the program.
Then MarxMenu writes a command to the environment variable MXCMD to
execute the temporary batch file and exits.
What it writes depends on the version of DOS you are running. If you are
running DOS 3.3 or later, MXCMD is set to CALL <batch>. If you are
running an earlier version of DOS then MXCMD is set to COMMAND /C
<batch>.
Whatever command is written to MXCMD is executed in line 3. This usually
calls the temporary batch file that MarxMenu created. This executes your
program and returns to MARX.BAT.
Line four jumps back to the beginning of the batch file and starts all
over. %0 is MARX.BAT and %1 is the name of the menu you are running.
MARX.BAT
-------- +-------MarxMenu Creates--+
+----> @ECHO OFF | |
| C:\MARX\MARXMENU.EXE %1 C:\MARX |
| %MXCMD% ->---+ +-> $MX00000.BAT
| +--> %0 %1 --+ | ------------
| | | +---------------------------> CD\WORDSTAR
+-|------<-----+ WS --+
| |
+--------------------------------------------------<-+
Computer Tyme MarxMenu Users Manual Page 9
_______________________________________________________________
Note: MarxMenu sets MXCMD = CALL $MX00000.BAT
When you exit the menu system. MarxMenu sets MXCMD to MXSTOP. This jumps
to a batch file called MXSTOP which gets you out of MARX.BAT. MXSTOP.BAT
can be modified to control what happens when MarxMenu is exited.
The default MXSTOP.BAT file is as follows.
SET MXCMD=
SET KSV=
REM You can control menu exiting with this file!
Note that by adding your own commands to MXSTOP that you can control
what happens when you exit. You could loop right back to the menu if you
want. Or, you could force a controlled network logoff.
I strongly recommend upgrading to DOS 3.3 or later whenever it is
possible to do so.
The name of the temporary batch file is as follows:
$MX00000.BAT
||||
Shells--------+|++--------Network Station (Hex)
Task Number
The 5 zeros are used for single user versions of MarxMenu. On a network
they change as follows:
The last 2 zeros is the station number on the network. This is either
read directly from the shell, if you are using Novell, or from the
environment variable STATION if you are on another network. The third
zero is the task number if you are running DesqView, or from an
environment variable TASK if you are running some other multitasker.
The second zero is replaced by one less than the number of COMMAND.COM
shells you are running. This way if you run COMMAND.COM under MarxMenu
and then run MarxMenu again under that, it doesn't get lost when you
exit.
The first zero is for future expansion. In case something comes along
that I haven't thought of.
If you want to do custom tricks, MarxMenu has an internal variable
called MxCmd. Setting this to your own command overrides the way
MarxMenu would normally use it.
Computer Tyme MarxMenu Users Manual Page 10
_______________________________________________________________
But now you ask, does MarxMenu leave a trail of batch files that will
clutter up my drive or network? Not at all. MarxMenu keeps using the
same names over and over again. If a user crashed his system, it might
leave a batch file but it would be overwritten the next time he used the
menu. Not only that, all batch files can be kept in the same directory
so cleaning up is as simple as typing DEL $MX*.BAT!
By writing to the MxCmd variable you can run an EXE or COM file directly
without having to create another batch file.
Example:
OnKey 'M'
|MxCmd = 'RAMMAP'
This runs RamMap directly from the MARX.BAT file.
Another trick is to run another batch file without the CALL statement.
This creates a one way jump to another batch file.
Another debugging feature. You can change the first line of the MARX.BAT
file as follows:
@ECHO %MXECHO%
This allows you to turn the echo on for debugging purposes by typing:
SET MXECHO=ON
This way you don't have to change the MARX.BAT file to debug. If you use
this, make sure that MXECHO is set to either ON or OFF.
DROPTO.BAT DROPTO.BAT DROPTO.BAT
If you are going to run a shell like COMMAND.COM under MarxMenu it is
sometimes better to use DROPTO.BAT which is created during the install
process. DropTo allows you to jump from the temporary batch file that
MarxMenu creates to DropTo, which deletes the temporary batch file and
executes the rest of the command line.
Usage: DROPTO %0 COMMAND.COM
If you are using DropTo inside a MarxMenu, the %0 is automatically added
for you.
Example:
OnKey 'C'
DropTo COMMAND.COM
Computer Tyme MarxMenu Users Manual Page 11
_______________________________________________________________
DROPTO.BAT
----------
DEL %1
SET KSV=
SET MXCMD=
%2 %3 %4 %5 %6 %7 %8 %9
Here's how it works:
$MX00000.BAT <------deletes this file--------+
------------ |
DROPTO %0 COMMAND.COM ------------> DEL %1 >-+
SET KSV=
SET MXCMD=
%2 executes COMMAND.COM--> %2 %3 %4 %5 %6 %7 %8 %9
The advantages are that the temporary batch file is eliminated so if the
user never returns to the menu, it leaves no temporary file to clutter
up the drive. Also, DROPTO.BAT becomes the pending batch file that is
running rather than the temporary file.
SUPPORT FOR EARLY DOS VERSIONS SUPPORT FOR EARLY DOS VERSIONS SUPPORT FOR EARLY DOS VERSIONS
There are two main differences between DOS versions earlier than 3.3 and
versions 3.3 and above. One is the CALL command for batch files and the
other is the way you specify environment space when using COMMAND.COM.
I have enhanced the support for early DOS versions (3.0, 3.1, 3.2).
MarxMenu executes COMMAND /C /E:nn (batchfile) >NUL to have one batch
file call another. The first two lines of the batch files created are as
follows:
ECHO OFF
CTTY CON
....
This eliminates the ECHO OFF from being seen.
Also whenever possible, when MarxMenu loads up a copy of COMMAND.COM, it
adds the /E:nnn command to set the environment space to the same as that
of the Master Environment. In versions earlier then 3.3 it is translated
to paragraphs instead of bytes.
One thing to note in early versions of DOS. If you run a batch file
under COMMAND /C and your batch file has SET commands to set environment
variables, the changes you make will disappear as soon as you get back
to MARX.BAT. Why? Because you loaded another COMMAND.COM and the SET
commands set its environment. When this COMMAND.COM ends, it takes its
environment with it. Under DOS 3.3 or later, which uses CALL instead of
another shell, the SET commands live. (Yet another reason to upgrade).
Computer Tyme MarxMenu Users Manual Page 12
_______________________________________________________________
ABOUT ENVIRONMENT VARIABLES ABOUT ENVIRONMENT VARIABLES ABOUT ENVIRONMENT VARIABLES
I've been talking a lot about environment variables. Some of you out
there in novice land don't know what an environment variable is. Many
others don't know the intricate secrets handed down from the Great DOS
Masters who know all the intricate undocumented features of DOS.
Your DOS shell, COMMAND.COM owns an area of memory called the Master
Environment. It contains strings in the form Name=Value. Included among
those strings are your COMSPEC and your PATH. Your COMSPEC tells DOS and
other programs where to find COMMAND.COM. Your PATH tells DOS and other
programs what directories to search when loading programs. Another
common environment variable is your PROMPT. This controls what your DOS
prompt will look like.
Environment variables are commonly set using the SET command. This is
done by typing SET NAME=VALUE.
Example:
SET COLOR=BLUE
So what does this actually do? Actually nothing, unless you have a
program that reads the environment variables that is looking for one
called COLOR. This way, environment variables can be used to leave
messages to other programs and control how they behave.
Besides leaving messages, environment variables can be accessed by batch
files. If you use %NAME% in a batch file, DOS will substitute the VALUE
of the variable for the %NAME% expression. And this feature is important
to MarxMenu's operation.
MarxMenu uses an environment variable called MXCMD. In the MARX.BAT file
the third line is %MXCMD%. So MarxMenu controls MARX.BAT by writing
values to MXCMD.
In order to do this, there must be enough room in the environment for
the command to fit. That is why you need to make sure that you have a
SHELL command in your CONFIG.SYS to set space for MarxMenu to use.
Now so far I've only talked about the Master Environment. That's the one
that the first COMMAND.COM owns. Each program that is loaded, including
TSRs, gets a copy of the Master Environment in its own environment. This
is called the CURRENT Environment.
One interesting feature of the Current Environment is that it is smaller
than the Master Environment. DOS only creates enough space to hold a
copy of the space used in the Master Environment and a little more to
store the name of the program that is running.
Computer Tyme MarxMenu Users Manual Page 13
_______________________________________________________________
If one program executes another program, the environment of the parent
program is called the Parent Environment. You will probable never need
to deal with the Parent Environment but MarxMenu can access it in case
you do.
Another environment is the SHELL ENVIRONMENT. This is the one that THEY
never talk about. The one you'll never read about in any books. The one
you'll never learn about in any DOS classes. This is the one your
parents never mentioned.
The Shell Environment is normally the same as the Master Environment.
But, if you are running more that one level of COMMAND.COM, the Shell
Environment is the environment of the last COMMAND.COM in memory. This
environment is the most important environment to MarxMenu.
So why load up two or more COMMAND.COMs? There are several cases where
this could occur. One case is when you want to run COMMAND.COM as a
program under MarxMenu. This way you can type EXIT to get back to the
menu. If you do this and then run MarxMenu again, you have two levels of
COMMAND.COM. In this case, the first COMMAND.COM is the Master
Environment and the second COMMAND.COM is the Shell Environment.
Another place where more than one COMMAND.COM is used is if you are
running Microsoft Windows 3 or DesqView. Both of these programs are able
to run a DOS shell. When you do, this is a second level of COMMAND.COM.
What is important is that SET commands and %NAME% commands in batch
files deal only with the Shell Environment and not the Master
Environment.
DEALING WITH MULTIPLE DOS SHELLS DEALING WITH MULTIPLE DOS SHELLS DEALING WITH MULTIPLE DOS SHELLS
If you are running more than one level of COMMAND.COM (Shelling from
Windows, DesqView, Word Perfect Office) and having environment space
problems here's a trick. Before you load up your fancy shells, put this
in a batch file like your AUTOEXEC.BAT.
SET MXCMD=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
This variable will be trashed by MarxMenu thus freeing up the
environment space it occupied. This will not only allow MarxMenu to run
but may solve problems with other programs you are running that need
environment space as well.
Computer Tyme MarxMenu Users Manual Page 14
_______________________________________________________________
MARXMENU AND TSR CONTROL MARXMENU AND TSR CONTROL MARXMENU AND TSR CONTROL
MarxMenu along with the TSR utilities that come with MarxMenu, can load
and unload TSRs under menu control. This is handy when you want to run a
big application and need to free up some memory to do it. Since MarxMenu
is a 0k menu system, unloading TSRs is possible but it has it's tricks.
The problem you run into is that when one batch file calls another batch
file, the way MarxMenu normally runs, DOS creates a small batch file
control block in memory. This control block stays in memory after the
TSR is released creating a region of trapped memory. Although this
memory is freed, it isn't usable.
The way around it is to jump to the batch file that releases memory
instead of calling it. This is done by setting MXCMD to the name of the
batch file you want to run. The only problem is that when you jump to
the other batch file, it won't automatically return to MARX.BAT. You
must therefore end your batch file with a command bringing you back to
MARX.BAT.
MEMHOG.BAT
-----------
Rem UnLoad SideKick
RELEASE SK
CD\MEMHOG
MEMHOG
MARK SK
SK
MARX MAIN
In your MAIN menu:
OnKey 'H'
|MxCmd = MEMHOG
See the documentation file on the TSR utilities disk for more
information on how to use MARK and RELEASE.
NETWORK USERS: NETWORK USERS: NETWORK USERS:
The main thing you have to worry about on a network is to make sure that
when MarxMenu creates a temporary batch file, that it is a different one
for each user on the network.
This is handled several ways. If you are on a Novell network, MarxMenu
uses your station number as part of the name for the temporary batch
file. If you are not using Novell, then you will need to set an
environment variable STATION for each workstation on your net. Each one
has to be a different number.
Computer Tyme MarxMenu Users Manual Page 15
_______________________________________________________________
Example:
SET STATION=5
You must ensure that the user has enough access rights to create
temporary batch files in the directory selected for temporary batch
files. One solution is to create a batch file directory and give all the
users full access rights to it.
MarxMenu has been run on about every DOS based network that exists. If
the network runs at all it will generally run MarxMenu. Among the
networks that come to mind are Novell, Lantastic, Banyan, 3COM, Lan
Manager, IBM, DECNET, ConCurrent DOS, and SCO VPIX. MarxMenu is running
on networks as small as two users to as large as 20,000 users. In fact,
the bigger your network, the more you need MarxMenu.
NOVELL USERS: NOVELL USERS: NOVELL USERS:
Novell is the most popular network on the market. We have added many
enhancements for Novell networks to support things like logging in and
logging out, drive mapping, group support, software metering, and status
information.
Although Novell is a high quality solid product it has its own
"Personality" and many undocumented features otherwise known as bugs.
Most people who are having trouble with MarxMenu under Novell are really
having trouble with Novell. Quite frankly, we do more Novell support
than we do MarxMenu support.
Having said that, I own two Novell networks. One at the lab and one at
home and I love my networks. But, I have spent hundreds of hours
learning all the tricks. And to save you a phone call, and me a lot of
time, I've decided to share these tricks here in my manual.
Some of these tricks are from the Great Network Gurus themselves who are
so advanced that they no longer exist in physical form. These people
live in another dimension of total mental existence and can only be
reached my modem. Some of them hang out on Compuserve.
I therefore strongly recommend that if you are a serious Novell user
that you join Compuserve and hang out in the Novell section. And just
because not everyone on Compuserve is a real person doesn't mean that
you should feel uncomfortable asking them any question about your
network that you need to ask.
Computer Tyme MarxMenu Users Manual Page 16
_______________________________________________________________
THE NOVELL MENU TRANSLATOR THE NOVELL MENU TRANSLATOR THE NOVELL MENU TRANSLATOR
One nice bonus with Novell networks is that MarxMenu can translate your
Novell menus to MarxMenu. This saves you the time of having to recode
your system. What you do is type:
MARXMENU NOVTRANS <menu>
This translates your Novell MNU file to a MarxMenu MRX file. Your MNU
file is unchanged. MarxMenu creates a TMP file containing the source
code for the MRX file. Once you are satisfied with the MarxMenu file,
you just delete the MNU file and rename the TMP file to MNU and forget
that you ever had a Novell menu.
Once the menu is translated you run it by typing MARX <menu> instead of
MENU <menu>. MarxMenu can run Novell's menu better than Novell runs
their own.
LOGGING OUT UNDER MENU CONTROL LOGGING OUT UNDER MENU CONTROL LOGGING OUT UNDER MENU CONTROL
Logging out under menu control is one of the trickiest things to do. The
problem is that as soon as LOGOUT executes, you no longer have access to
the network. This means that if you are in a batch file, you are going
to get a "Missing Batch File" error, unless the batch file is in the
\LOGIN directory.
Another problem with logging out is making sure that your COMSPEC is
pointing to a COMMAND.COM that is either on the local drive or in the
\LOGIN directory. Otherwise you will get a "Cannot load COMMAND.COM"
error.
Another problem that you need to deal with is that your PATH command
needs to be changed so that it doesn't refer to mapped drives that are
no longer accessable.
What you need to do is create a batch file in the \LOGIN directory
called OFF.BAT.
Example: F:\LOGIN\OFF.BAT
CD\LOGIN
SET COMSPEC=C:\COMMAND.COM
LOGOUT
C:
PATH=C:\DOS
Another way to logout under MarxMenu is to stuff the LOGOUT command into
the keyboard buffer and exit MarxMenu.
Computer Tyme MarxMenu Users Manual Page 17
_______________________________________________________________
Example:
OnKey ESC
|StuffKBD 'LOGOUT' + CR
|ExitMenu
This is the cleanest way when possible.
Another logout trick is to use the LOGOFF utility from the Computer Tyme
Network Survival Kit. This program automatically fixes your PATH and
COMSPEC after the logoff occurs.
LOGGING IN WITH MARXMENU LOGGING IN WITH MARXMENU LOGGING IN WITH MARXMENU
If there is any one thing that's trickier than logging out of a Novell
network, is logging in. I have spent MANY hours struggling with Novell
trying to get it right and I have finally figured it out. Much of this
comes from the Novell gurus who hang out on Compuserve and know
everything there is to know about Novell.
The first thing you need to do is make up your mind that you are going
to do it right. The technique here might seem somewhat cumbersome, but
it works well and will keep you out of trouble.
MarxMenu has the ability to log you into a network, map your drives, and
set your environment strings without having to touch a Novell utility to
do so. MarxMenu can completely eliminate the need for Novell login
scripts. The advantage to using MarxMenu in the login is that you have
the power of 500 commands to work with instead of just 25 or so.
THE CONFIG.SYS FILE THE CONFIG.SYS FILE THE CONFIG.SYS FILE
The place to start is the place where DOS start when DOS boots. You MUST
create a CONFIG.SYS file on your boot disk. The CONFIG.SYS tells DOS how
many files and buffers to create, what device drivers to load, and the
size of the Master Environment.
Unless you are using special drivers, BUFFERS=40 and FILES=40 is a good
place to start. STACKS 0,0 will gain you an extra 3k of ram. But the
most important command is the shell statement. A CONFIG.SYS file might
look like this:
SHELL=COMMAND.COM /P /E:400
BUFFERS=40
FILES=40
DEVICE=ANSI.SYS
This sets up enough environment space to allow MarxMenu and DOS SET
commands to work properly. You will also want to load any other device
drivers like QEMM386.SYS or 386MAX.SYS to take advantage of other
features of your computer. If you don't know about CONFIG.SYS files,
read the DOS manual.
Computer Tyme MarxMenu Users Manual Page 18
_______________________________________________________________
THE AUTOEXEC.BAT FILE THE AUTOEXEC.BAT FILE THE AUTOEXEC.BAT FILE
After the CONFIG.SYS is loaded the AUTOEXEC.BAT runs next. Here you load
up your TSRs and network drivers. There are some important tricks to be
used here as well.
First of all, never load your network shell from your AUTOEXEC.BAT file.
Always have it branch to another batch file called LOADNET to load the
network shell. Use the autoexec.bat only to load special TSRs and the
IPX. An autoexec.bat might look like this:
@Echo Off
Cls
IPX
SET NET=NET4.COM
SET COMSPEC=X:COMMAND.COM
LOADNET
The two SET commands are very important. The first sets a variable
called NET to NET4.COM. This will be used later in LOADNET.BAT. By using
this variable, you can have users running many different versions of DOS
and still use the same LOADNET.BAT file. You could also use a command
SET NET=LOADHI EMSNET4.EXE to take advantage of advanced memory manager
software.
Another trick is to run BESTNET from the Network Survival Kit. BestNet
will automatically pick the best network shell and set the NET
environment variable for you. You would use the command BESTNET instead
of SET NET=NET4.COM in the AUTOEXEC.BAT file.
The SET COMSPEC=X:COMMAND.COM is important if you are booting off of
either a floppy drive or a diskless workstation. This assumes that X:
will eventually be mapped to a directory on the network that has a valid
COMMAND.COM in it.
It is important to set the comspec BEFORE loading your NET shell. This
prevents a problem where Netware wants to go back to the boot disk even
after you change the comspec. I don't know why this works but it does.
Trust Me. If you are going to use COMMAND.COM on drive C:, ignore this
paragraph.
Now we go to the LOADNET.BAT file.
@Echo Off
%NET%
SET NET=
F:
STARTUP
Computer Tyme MarxMenu Users Manual Page 19
_______________________________________________________________
The big concept behind LOADNET is that this file is NEVER CHANGED. You
put in on all your workstations and in the LOGIN directory and it is
EXACTLY THE SAME for every computer in your network. Any changes to
individual computers are made in the AUTOEXEC.BAT file.
So why is this important. Because if you are running diskless
workstations what happens is that while you are booting you have a
mythical drive A:. As soon as your NET shell loads this drive
dissappears out from under you and you end up in F:\LOGIN. If you are
running LOADNET.BAT when this happens you drop out of A:LOADNET.BAT and
land in the middle of F:\LOADNET.BAT. And if your LOADNET.BAT is exactly
the same file as the LOADNET.BAT in the \LOGIN directory, you take off
running like the transition never occured.
Even if you are not running on diskless workstations now, you might go
to it someday. It also creates good programming habits and helps you
boot up cleanly.
Lets see what LOADNET does. The first line is @ECHO OFF, that's easy.
The second line %NET% executes the network shell that you specified with
the SET NET=NET4 command. This actually loads the network shell. The
third line clears the NET variable freeing up space for other
environment variables. F: switches you to drive F if you aren't there
already. And finally STARTUP is the name of yet another batch file you
jump to.
The STARTUP.BAT file controls what happens AFTER LOADNET runs. This file
can be freely changed so that LOADNET.BAT can stay the same. This lets
you modify what happens AFTER the network shell is loaded.
If you are using Novell's login program STARTUP.BAT might look like
this:
@Echo Off
LOGIN
USING A MENU FILE TO LOG IN USING A MENU FILE TO LOG IN USING A MENU FILE TO LOG IN
If you are going to use MarxMenu to log in instead of Novell's
utilities, you will want to print out the sample file LOGIN.MNU on your
MarxMenu disk and study it. Your STARTUP.BAT file might look like this:
@Echo Off
SET BOOTUP=LOGIN
MarxMenu Login
%BOOTUP%
If MarxMenu works correctly, it will change the environment variable
%BOOTUP% to point to a file that it creates. If for some reason it fails
(you make a mistake in the login), it will execute Novell's login and
let you get in and fix it.
Computer Tyme MarxMenu Users Manual Page 20
_______________________________________________________________
One word of caution. After modifing this menu, always run MARXCOMP LOGIN
to compile it. Otherwise, if you boot up into it you won't have enough
access rights to recompile automatically.
NOVELL SEMAPHORES NOVELL SEMAPHORES NOVELL SEMAPHORES
For a detailed explanation of Novell Semaphores, read the Novell
manuals. What I've done is to export these functions to MarxMenu. I have
implemented them slightly different than Novell did and have hidden all
the nasties from you such as semaphore handles. All semaphores are
accessed by name only.
Here's a brief overview of semaphores. Semaphores are names of shared
resources that the server keeps track of. Semaphores have three
properties. They have a name, value and number of users. The name can be
anything up to 48 characters long. The value is a number from -128 to
127. If the value is less than 0, the resource the semaphore represents
is considered used up.
By opening a semaphore, you increase the number of users by one. By
closing it, you decrease the number by one. If a single user opens a
semaphore many times, it is only counted as one. When you log out, your
semaphores are closed. This is also true if you turn your computer off,
but it takes 15 minutes for the server to give up on you.
The first user to open a semaphore creates it. The last user to close a
semaphore deletes it. When a semaphore is created, a value can be
assigned. If a semaphore is opened that already exists, the initial
value is ignored.
When NovWaitOnSemaphore is called by any user, the value is decremented.
If the value is not below zero, NovWaitOnSemaphore returns true.
Otherwise it returns false and the value is unchanged. The amount of
time that NovWaitOnSemaphore will wait is controlled by the variable
NovSemaphoreTimeOut.
When NovSignalSemaphore is called by any user, the value is incremented.
This allows other users to call NovWaitOnSemaphore and get a True value.
NovSemaphoreUsers and NovSemaphoreValue are used to read the status of a
semaphore without changing it's value.
One of the major differences between how MarxMenu uses semaphores and
the way Novell uses them is that normally a semaphore dies when the
application finishes. This would normally prevent a 0k menu system from
being able to use them. MarxMenu uses an interesting trick where it
fools Netware into thinking that the semaphore belongs to another task.
This allows the semaphore to live.
Computer Tyme MarxMenu Users Manual Page 21
_______________________________________________________________
Semaphores can be tracked using FCONSOLE. Some versions of Netware have
a bug in FCONSOLE that reports an open count that is 256 times the real
count. Just divide by 256 for the right number.
Semaphores can be used for software metering. This allows MarxMenu to be
aware of what other users on the network are doing. Here are the basic
tools, what you do with them is only limited by your imagination.
RUNNING A MARXMENU RUNNING A MARXMENU RUNNING A MARXMENU
MarxMenus are run by typing MARX and the name of a menu file such as
SAMPLE.MNU. As discussed earlier, the menu file is a text file created
with a text editor such as TEDIT.
Usage: MARX <Menu Filename>
Example:
MARX SAMPLE
In the above example, if SAMPLE.MRX doesn't exist, or is older than
SAMPLE.MNU then MarxMenu will automatically load the complier,
MARXCOMP.EXE to create a new SAMPLE.MRX file.
In the never ending quest for more speed, MarxMenu is somewhat faster to
load if you include the MRX extension.
Example:
MARX SAMPLE2.MRX
By specifying the MRX extension, no test is made to compare the file
date with the source file. Thus if you have changed the MNU file, you
will still be running the old version. In order to force a recompile,
type MARXCOMP SAMPLE.
CUSTOMIZING MARXMENU SAMPLE FILES CUSTOMIZING MARXMENU SAMPLE FILES CUSTOMIZING MARXMENU SAMPLE FILES
Included in the MarxMenu package are menu files which you can easily
modify to execute your programs and perform other functions you desire.
Using TEdit, the text editor included in this package, you can modify
and customize these menu files.
Also included to demonstrate the power and versatility of the menu
system is a menu labeled NIM.MNU. This is a game written in the menu
system that demonstrates some of the logic functions and programmability
of the system. Use it for reference.
Computer Tyme MarxMenu Users Manual Page 22
_______________________________________________________________
Here's a simple example of a menu file:
===================================
ClearScreen
DrawBox 30 9 25 8
Writeln ' 1) Lotus'
Writeln ' 2) dBase'
Writeln ' 3) Wordstar'
Writeln
Write 'Select: '
OnKey '1'
cd\lotus
123
OnKey '2'
cd\db3
db3
OnKey '3'
cd\wordstar
ws
====================================
Notice in looking at the "OnKey" statements that all I have to do is
tell MarxMenu how to get to the program. Although, MarxMenu takes care
of reloading itself after exiting a selected program, its does not
return to its own subdirectory as many other menu programs do.
That means that if you execute a program in another subdirectory, when
you come back to the menu, you remain in that subdirectory. If you
normally run your applications with a batch file, consider having
MarxMenu change directories and execute the program for you. This will
eliminate debugging problems caused by the actions of your batch files.
MENU ANALYSIS MENU ANALYSIS MENU ANALYSIS
Let's start a simple analysis of the example menu file shown
above. The ClearScreen statement simply clears the screen to
give us a fresh workspace for the menu. DrawBox is the command to
draw a box on the screen to contain some menu text. The Writeln
command writes a line of text to the screen within the box, then
positions the cursor on the next line. The menu text shows the
available selection keys that the user has access to.
Computer Tyme MarxMenu Users Manual Page 23
_______________________________________________________________
ONKEY STATEMENTS ONKEY STATEMENTS ONKEY STATEMENTS
The OnKey statements control what is actually executed. OnKey
statements also allow you to execute hidden commands when you do
not want them to appear on the menu screen. One trick I use is to
have an OnKey statement define a key that runs TEDIT on my
personal menu file. I don't show this key on the menu to keep
others from poking around in the file. For additional security
a password can also be set up on this key.
Normally you enter a line of text as if you were creating a BAT
file to run your application. Like batch files, if one of your
commands is a batch file, all the statements after it will not
execute. To prevent this you can use the CALL command to call a
batch file in DOS 3.3 or later, or COMMAND /C in DOS 3.0, 3.1 and
3.2.
Normally, text displayed under an OnKey statement is the same
text as the batch file created by MarxMenu. There are some
exceptions. If a line starts with a "|" (vertical bar), the line
will be interpreted by MarxMenu instead of being written to a
batch file. This allows commands such as "PASSWORD" to be used.
String variables can be passed as part of a batch command if the
name of the string variable starts with a "%" symbol.
The spaces preceding the commands under the OnKey statement are
for clarity only. They are not necessary for MarxMenu to function
properly.
POPUP MENUS POPUP MENUS POPUP MENUS
If you want to create a popup menu within a menu you can do so by
using a "label". A label is a keyword preceded by a colon. To
call the popup menu, place the keyword on a line by itself
preceded by a carat (Shift 6). The label will precede the popup
menu definition.
For example if you have a popup menu to load Smart Software, you could
name the PopUpMenu Smart. To bring up the Smart PopUpMenu, define a key
in your main menu for Smart like this:
OnKey 'S'
^Smart
The Smart menu itself might look something like this:
Computer Tyme MarxMenu Users Manual Page 24
_______________________________________________________________
:Smart
BoxHeaderColor ForeColor BackColor
BoxBorderColor Yellow Green
BoxInsideColor LCyan Green
InverseColor Yellow Red
BoxHeader = ' Smart Menu '
DrawBox 45 16 20 6
UseArrows 2 2 16 3
ClearLine 205
Writeln
Writeln ' Data Base'
Writeln ' Spread Sheet'
Write ' Word Processor'
OnKey 'D'
SM D
OnKey 'S'
|BoxHeaderColor ForeColor BackColor
|BoxBorderColor Yellow Green
|BoxInsideColor White Green
|%1 = PickFile('C:\SMART\SPREAD\*.WS',4,5,17)
SM S -ALOAD %1
OnKey 'W'
|BoxHeaderColor ForeColor BackColor
|BoxBorderColor Yellow Green
|BoxInsideColor White Green
|%1 = PickFile('C:\SMART\WORD\*.DOC',4,5,17)
SM W -ALOAD %1
While developing the menu, program one of the keys to run your favorite
editor on the menu file that you are creating. This way, as soon as the
change is made, the results will show when you exit your editor. Since
MarxMenu allows versatility in creating the look of your menus, a little
trial and error will be required to make things look right.
THE CONSOLE THE CONSOLE THE CONSOLE
+---| Console Functions |---+
| 1 - Blank Screen |
| 2 - Set Blank Message |
| 3 - Lock Keyboard |
| 4 - Set Blank Time |
+---------------------------+
The Console is a popup menu of built-in functions. To activate the
console, press the TAB key. A menu will pop-up in the upper left hand
corner of the screen. You can change the position of this popup menu
with the ConsolePos function.
Computer Tyme MarxMenu Users Manual Page 25
_______________________________________________________________
The first command on the Console screen is Blank Screen. Enter 1 and the
screen will blank immediately. It will remain blanked until a key is
pressed. Enter 2 on the Console menu and you can change the message
displayed on the Blank Screen display.
Enter 3 and you will be prompted for a word to lock the keyboard. After
you enter the lock word the screen will blank and the keyboard will be
locked until the exact lock word is typed. Enter 4 to set the number of
minutes to wait before blanking the screen.
The lock word feature is handy for times when you must leave the
keyboard but don't want menu commands displayed for all to see. It also
effectively locks the keyboard so someone can't escape to DOS and test
the format command on your hard disk. We run this menu on a Novell
Network and don't want to let everyone have access to the Supervisors'
power at the touch of the escape key should we leave the keyboard.
REPOSITIONING THE TOP WINDOW REPOSITIONING THE TOP WINDOW REPOSITIONING THE TOP WINDOW
One nice feature you can use to get the windows right is to turn on the
scroll lock. This lets you move the top window around the screen using
the arrow keys so you can see how it looks. Then you can go into your
menu code and set it permanently.
Set Scroll Lock to "on". On most keyboards, a scroll lock LED will light
up. Now use the arrow keys to move the top window to any position on the
screen. Neat Huh?
MOUSE SUPPORT MOUSE SUPPORT MOUSE SUPPORT
If you have a standard mouse driver, MarxMenu will detect it and use it
automatically. The left button on the mouse is the same as pressing
return. The right button on the mouse is the same as pressing escape.
Pressing both buttons on the mouse is the same as pressing the tab key.
As of now, I'm not yet using the center button on the mouse for
anything.
The sensitivity of the mouse can be controlled using the MouseHorizontal
and MouseVertical commands.
Computer Tyme MarxMenu Users Manual Page 26
_______________________________________________________________
STARTING OFF THE EASY WAY STARTING OFF THE EASY WAY STARTING OFF THE EASY WAY
For those of you who want to just get a menu going and don't want
anything complicated we have included a menu called the LEVEL1 menu.
This menu is a fill in the blank type of menu that will get you going
quickly and easilly.
This menu requires no programming and explains itself. You run it by
typing the command:
MARX LEVEL1
The first thing it does is scan your drive to find the directories. Then
you just answer the questions and fill in the menu. This isn't as
powerful as programming your own menu, but if you want something quick
and dirty, this may be the answer for you.
ABOUT VARIABLES ABOUT VARIABLES ABOUT VARIABLES
One of the most unusual things about MarxMenu is its variables. MarxMenu
handles variables differently than any other programming language. For
the experienced programmer, this may require some adjustment since it's
like getting used to driving a Cadillac after driving a VW Beetle.
All variables in MarxMenu are like an empty box that can contain
anything. A variable can be a number, boolean, string, file, array, etc.
The type of variable is controlled internally and the user need not
declare variable types.
Variables are created with the VAR command:
Var X Y Z
If the word VAR is on a line by itself, the following lines, up to a
blank line, are considered variable names.
Var
MyAge
YourAge
HisAge
HerAge
Variables are initialized to null values; 0 for Numbers, False for
Booleans, and '' for strings. Initial values can be set when the
variable is created.
Var
X = 6
MyName = 'Marc'
Programmer = True
Computer Tyme MarxMenu Users Manual Page 27
_______________________________________________________________
Variables can change variable types. If you write a number to a string
variable, the variable changes to a number.
X = '234'
X = Value(X)
This is valid in MarxMenu. X now is a number and contains the value 234.
Number variables are 32-bit integers ranging between plus or minus
2,147,483,647.
Boolean variables are True or False.
String variables are limited to 255 characters.
In MarxMenu, string literals are delimited by either single or double
quotes.
"This can't be yogurt!"
'Lincoln said "Four score and seven years ago ..." '
Numbers beginning with a '$' indicate base 16 or hex numbers.
When choosing variable names, it is good programming practice to choose
long meaningful names. This allows yourself and others to be able to
read menus and follow the logic more easily.
REAL NUMBERS REAL NUMBERS REAL NUMBERS
So what's the difference between ordinary numbers and real numbers?
Ordinary numbers in MarxMenu are 32 bit integers. These are numbers
whose range is about plus or minus two billion. Integers are whole
numbers and do not include any fractions.
This is why MarxMenu has included REAL numbers (also known as Floating
Point numbers). Real numbers in MarxMenu use BCD (Binary Coded Decimal)
with 18 digits of accuracy. They have a range of 10 to the plus or minus
63rd power, which means up to 63 zeros either side of the decimal point.
This lets you work with very big and very small numbers. MarxMenu has
smart rounding algorithms so that 1.0 / 3 * 3 = 1.0 and not
0.999999999999999999 like in most languages.
Real numbers are specified by using a decimal point. Thus 5.0 specifies
a real number. Most normal MarxMenu functions still require the standard
32 bit integers. If you get the error: 'REAL found where INTEGER
expected.' You need to use an integer.
If an integer is passed where a real is expected, the integer is
automatically converted to a real. Thus:
6.0 * 3 = 18.0
Computer Tyme MarxMenu Users Manual Page 28
_______________________________________________________________
The Value function returns real numbers if a decimal point is used in
the string. All the relevant math functions will work with reals as well
as comparison operators.
MarxMenu supports a variety of functions for real numbers. It has trig
functions, log functions, and exponential functions. So why do you need
real numbers in a menu program? I don't know. I had a library and
threw them in. I figure someone will need them someday.
With real numbers you can do trigonometry calculations like those
discovered by the ancient Indian chief Pythagoras who discovered what is
now know as Pythagoras's triangle.
Now I know that a lot of you were taught in Math class that Pythagoras
was Greek. Well, it's just not so. Let me tell you the real story:
Pythagoras was an Indian chief that had three wives. Two of the wives
were twins and weighed 120 pounds each. And they sat next to Pythagoras
on a pair of twin deer hides.
But Pythagoras also had a third wife who was a large fat woman who sat
across from Pythagoras on a hypopotamus hide. This wife weighed 240
pounds.
What Pythagoras discovered was that the squaw on the hypopotamus was
equal to the sum of the squaws on the other two hides!
LOCAL VARIABLES LOCAL VARIABLES LOCAL VARIABLES
MarxMenu also supports local variables. Variables declared within
procedures become local variables. Local variables are just like global
variables in that you can use them as multidimensional arrays. When the
procedure finishes, all local variables are disposed.
If a local variable has the same name as a global variable, the local
variable will be used.
PASSING PARAMETERS TO PROCEDURES PASSING PARAMETERS TO PROCEDURES PASSING PARAMETERS TO PROCEDURES
Procedures can accept parameters by declaring variable names on the same
line as the name of the procedure.
Procedures can return variables by using the Return command. Return
exits the procedure returning the parameters on the same line as the
Return statement.
Example:
Computer Tyme MarxMenu Users Manual Page 29
_______________________________________________________________
Procedure Factorial (X)
var Y Z
Y = 1
Z = 1
while Y <= X
Z = Y * Z
Y = Y + 1
endwhile
Writeln X ' factorial is ' Z
endproc
In this example, if you were to use Factorial (5) you would get:
5 factorial is 120
Another Example:
Procedure AskYesNo (Question)
var YesNo
DrawBox (34 - (Length(Question) / 2)) 21 Length(Question) + 14 3
TextColor LCyan Blue
UseArrows Off
Write ' ',Question,' (Y/N) '
YesNo = UpperCase(ReadKey)
YesNo = YesNo = 'Y'
if YesNo
Write 'Yes'
else
Write 'No'
endif
Wait 50
EraseTopWindow
Return (YesNo)
EndProc
if AskYesNo 'Do you want to continue? ' then Continue
In this example, MarxMenu draws a box and asks a question and waits for
a Yes or No answer.
Arrays can be passed as parameters. Parameters are passed by value not
by reference. This means that any changes to the passed parameter do not
affect the original value.
You can copy an array by assigning it equal to another array.
Example:
Array1 = Array2
Computer Tyme MarxMenu Users Manual Page 30
_______________________________________________________________
This creates Array1 with a copy of all the elements of Array2. The
previous contents of Array1 are overwritten.
ABOUT CONSTANTS ABOUT CONSTANTS ABOUT CONSTANTS
Constants are used to give values meaningful names. By using constants a
value can be assigned once and the constant name used throughout the
menu program. This way, if you change the value of the constant, all the
places where that constant is used automatically change.
This is good programming practice.
Examples:
Const States = 50 CPU = '80386 SX' WeekEnd = True
or
Const
States = 50
CPU = '80386 SX'
WeekEnd = True
Using the word STATES is just like using 50. Using CPU is just like
using '80386 SX'. But if throughout my menu I use CPU, and then I get a
new computer with a 80486, I can just change one line:
Const CPU = '80486'
And all the places I used CPU changes to '80486'. This is the correct
way to program.
ABOUT ARRAYS ABOUT ARRAYS ABOUT ARRAYS
MarxMenu supports multidimensional arrays up to 31 dimensions. Unlike
other programming languages, arrays need not be declared. MarxMenu
creates arrays "on the fly" and automatically takes care of the array
size and number of dimensions.
Another unusual feature of MarxMenu arrays is that they are an array of
MarxMenu variables. This means that elements of MarxMenu arrays need not
be of the same type. Element 1 can be a number, element 2 can be a
string and element 3 can be another array.
This type of variable management leads to the easy creation of very
powerful data structures as you will see.
Var X
Computer Tyme MarxMenu Users Manual Page 31
_______________________________________________________________
X[1] = 'Element 1'
X[2] = 3
X[3] = True
X[4,6] = 9
X[4,7] = 'Ten'
These are all valid statements. MarxMenu creates a two dimensional array
here. If we now execute the following statement:
X[4] = X[4,6] + X[2]
X[4] becomes equal to 12 but variables X[4,6] and X[4,7] are lost. This
is because we have changed an array into a number. MarxMenu
automatically handles the deallocation of memory used by this array and
its elements and returns the space the used to the memory pool.
ABOUT QUALIFIERS ABOUT QUALIFIERS ABOUT QUALIFIERS
Qualifiers are named indexes into arrays. They are used to make the
source menu file more readable and more organized.
Suppose we are creating a data structure to deal with places in the
United States. First we will need an array for States.
Var States
We want to store some facts about the states.
Qualifier
Population
Bird
Motto
County
State[3].Population = 10000000
State[3].Bird = 'Chicken'
State[3].Motto = 'Best politicians money can buy!'
Now states have counties and counties have county seats, sheriffs, and
cities.
Qualifer
Sheriff
Seat
City
State[3].County[7].Sheriff = 'Buck InBred'
State[3].County[7].Seat = 'Possum Trot'
Now counties have cities and cities have schools, mayors, churches, and
taxes.
Computer Tyme MarxMenu Users Manual Page 32
_______________________________________________________________
Qualifier
Schools
Mayor
Churches
Taxes
State[3].County[7].City[9].Schools = 8
State[3].County[7].City[9].Mayor = 'Virgil Collins'
State[3].County[7].City[9].Churches = 120
State[3].County[7].City[9].Taxes = '$100,000,000'
The above line is the same as:
State[3,4,7,3,9,4] = '$100,000,000'
As you can see with qualifiers, it is easy to create multidimensional
arrays in a way that is organized and readable.
In this example, the qualifier Population became equal to 1. Bird became
equal to 2. The variable references, State[3].Bird and State[3,2] are
the same. It's just that one is more readable than the other. Qualifiers
normally begin by assigning 1 to the first name and 2 to the second
etc. This can be modified.
Qualifier
Color = 7
Size
Shape
In this case Color becomes the number 7; Size becomes the number 8; and
Shape becomes the number 9.
COMMENTS IN MENU FILES COMMENTS IN MENU FILES COMMENTS IN MENU FILES
MarxMenu has three ways to add comments to a menu file. The first way is
with the Comment command.
Comment
========================
This is a comment block.
========================
EndComment
All lines up to EndComment are ignored.
The second way is with a ';'. All text to the right of the ';'
(semicolon) is ignored.
BlankTime = 20 ;this is where we set the blank time.
Computer Tyme MarxMenu Users Manual Page 33
_______________________________________________________________
The third way is using {} or curly braces. Anything inside the curly
braces is ignored. Curly braces can be nested.
{All of {this} is a comment.}
Comments are ignored by the compiler and cost you nothing in execution
speed. Comments can save you a lot of time if you have to come back
later and work on your menu, or if someone else has to work on it.
Therefore, I encourage you to use comments as much as possible.
THE MARXMENU COMPILER THE MARXMENU COMPILER THE MARXMENU COMPILER
MarxMenu reads your MNU files and creates MRX files. These MRX files are
a highly digested form of the MNU file that you created. MRX files are
the compiled files.
When you run MarxMenu, the interpreter MARXMENU.EXE looks for the menu
file with the MRX extension. If it doesn't find it, MARXMENU.EXE will
automatically load MARXCOMP.EXE and compile the menu. MARXMENU.EXE also
compares the file dates of the MNU and the MRX files. If the MNU file is
newer than the MRX file, the complier will be loaded.
MarxMenu will also force a compile if the MRX file was not complied by
the same version and release date of the MarxMenu you are using. MRX
files are not compatible from one version of MarxMenu to the next.
You can also force a compile from the command line by typing MARXCOMP
<menu>.
COMPILER COMPATIBILITY COMPILER COMPATIBILITY COMPILER COMPATIBILITY
The MarxMenu compiler is fully compatible with earlier versions of
MarxMenu with a few exceptions. The new compiler does a lot more error
checking than earlier versions of MarxMenu and will catch errors that
you used to get away with. Other than that, the only difference you
should notice will be a speed increase.
Earlier versions of MarxMenu had separate names for variable types. The
names $VAR, BVAR, #VAR, and FILEVAR act the same as typing VAR.
Very early versions of MarxMenu had a different form of the USEARROWS
command that required 4 to 5 numbers after it. If you run into this
error, just get rid of the numbers after USEARROWS and it will work
fine.
Computer Tyme MarxMenu Users Manual Page 34
_______________________________________________________________
A WORD ABOUT DOS VERSIONS ..... A WORD ABOUT DOS VERSIONS ..... A WORD ABOUT DOS VERSIONS .....
Versions of DOS below 3.3 will cause MarxMenu to use 3.5k of ram where
3.3 DOS and above use no memory. 3.2 DOS is very buggy and should be
replaced. 3.1 DOS isn't too bad for bugs but if you're using the BACKUP
and RESTORE programs that came with it, you're in trouble. They don't
work on large files. You'll find that out if you try to restore one of
them.
MS-DOS 4.01 seems to be pretty clean provided you have the April-89
release or later. To determine if you do, check the file date on
COMMAND.COM. Earlier versions of DOS 4.01 have SERIOUS BUGS. If you are
running any DOS 4 earlier than April-89 you should upgrade immediately.
DR-DOS or EZ-DOS are pretty good also. It is very compatible as long as
you don't get too strange with it. I recommend version 3.4 or later.
4DOS is also pretty good but sometimes some of the advanced features in
this product can cause it to behave differently than DOS. This requires
extra care when writing your menus.
MarxMenu should work correctly on 386 type multiuser operating systems
such as Digital Research's Concurrent DOS 386 or SCO VPIX DOS emulators.
Although MarxMenu should run under PC-MOS I do not recommend it. My
experience with PC-MOS has been nothing but grief.
MarxMenu will not run correctly under DesqView 2.26. It will run under
2.25 or 3.21. So if you are running 2.26, it needs to be upgraded.
MarxMenu contains several support functions for DesqView.
If you are running under some weird DOS and are having problems, try it
under "regular" DOS and see if it goes away. If it does, try to find out
what it is about your weird DOS that makes it not work right. I am
interested in being compatible with as many systems as I can. Let me
know if you are having problems. But also, try to get your wierd DOS
vendors to clean up their act.
A WORD ABOUT BUGS ..... A WORD ABOUT BUGS ..... A WORD ABOUT BUGS .....
Although I try to create perfect bug free software, every now and then
even I make a mistak. If you find one, let me know and I'll fix it.
Computer Tyme MarxMenu Users Manual Page 35
_______________________________________________________________
TIPS FROM THE MASTER TIPS FROM THE MASTER TIPS FROM THE MASTER
Since MarxMenu is a programing language, I want to talk about what
programing is and how it is accomplished. I want to dispel some myths
and fears relating to it and introduce you to techniques that will help
you write code neatly, quickly, and efficiently. From the outside,
programming looks like magic; but once you know a few of the tricks, its
really not too hard.
Many of us who were raised on 50s and 60s science fiction television
learned that it is the brainy types who deal with computers. It almost
gives you the impression that the computer is smart and you are dumb. As
you use the computer, it is evaluating you, and if it figures out that
its smarter than you, it can get your job and replace you.
COMPUTERS DO SIMPLE TASKS COMPUTERS DO SIMPLE TASKS COMPUTERS DO SIMPLE TASKS
A computer is a simple device. It does simple tasks. It just does them
very fast and accurately. Computers don't even know basic things like
how to write letters on the screen or how to read the keyboard. These
are programs that the computer runs. Someone had to program your
computer to do even the simplest of tasks.
As you learn to use MarxMenu start with the simple menus. The SAMPLE.MNU
is a very easy program. Study it and understand how it works. Make a
copy of it and change one selection to run one of your programs.
Once you have changed one selection, change several more. Now MarxMenu
is running your programs, and you have made it work. Then try something
new. Add more selections. Change the size and position of the box to fit
your needs.
Take the time to play with it. Try new commands. Build up your menu. Be
artistic. The more you work with it, the more you will learn.
COMPLEX TASKS ARE MADE OF SIMPLE TASKS COMPLEX TASKS ARE MADE OF SIMPLE TASKS COMPLEX TASKS ARE MADE OF SIMPLE TASKS
As you learn more about MarxMenu, move on to SAMPLE2.MNU. Here we use
more of the power of the MarxMenu language. As you study this menu, you
will notice something. Even though it looks complex, it is really a
collection of simple tasks. Understand how the moving windows work.
Understand that the pop-up menus are just like the main menu. You will
see that it is really not a complex menu at all. It is a lot of simple
processes hooked together.
That is one of the main concepts behind programming. Complex tasks are
built out of simple tasks. As you learn the simple tasks, you will
quickly understand how to connect them to accomplish complex tasks.
Computer Tyme MarxMenu Users Manual Page 36
_______________________________________________________________
When one sees a castle, one can't help but to be impressed. But castles
are made of stones. And you can't build castles until you understand how
stones work. Then you realize that a castle is just a bunch of stones
hooked together. Programming is just like that.
To successfully understand MarxMenu, start at the bottom and work your
way up. Each little trick you learn becomes another building block for
the next trick. What you start with becomes the foundation for the work
that you will eventually produce.
LEARNING GOOD PROGRAMMING HABITS LEARNING GOOD PROGRAMMING HABITS LEARNING GOOD PROGRAMMING HABITS
Programming has its pitfalls, here I hope to give you some tips that
will help you avoid common mistakes. This, I hope will give you a head
start on the road to MarxMenu being done right.
The first concept is patience. Rome wasn't built in a day. You may not
be able to write grand and glorious menus the first try. In fact, you
may have trouble getting the damn thing to work at all. As you have
probably already noticed, no program is perfect. Sometimes there are
errorrs in the manual. Sometimes it just doesn't work like you expected,
or does not work the same way as other programs that are familiar to
you.
But, once you complete the installation, give it some time and realize
that there is a lot of potential here. Approach all challenges with a
good attitude.
USE LONG NAMES USE LONG NAMES USE LONG NAMES
I learned computers the hard way. Out on the streets. Hanging around
with other computer nerds in the late 70s who never went to college
either. I was known as a Bit Wit. My first real computer was an IMSAI
kit. Actually, it wasn't all IMSAI, it was a combination of several kits
where no two boards came from the same supplier. It was in an IMSAI box,
so I call it an IMSAI.
It was all supposed to work together the salesman told me the day before
they went out of business. And it all did after some redesigning. I was
tired of fixing CB radios for a living and decided that computers were
here to stay and that I was going to learn about them.
With that in mind, everything that went wrong became an opportunity for
growth. Not that I looked forward to things not working. I programmed
the thing from scratch, loading binary codes into memory from an array
of switches on the front panel.
The first program I wrote ran the EPROM burner, which was the only
storage device I had. After I saved this program on a chip, I used it to
load the second program onto the chip.
Computer Tyme MarxMenu Users Manual Page 37
_______________________________________________________________
Eventually I wrote enough software to talk to the screen and keyboard.
Now I could type hex codes on the screen and save them to a chip.
Eventually I wrote a tape driver and could save stuff on tape. Later, I
traded for a North Star disk drive and had a disk system. One 90k
floppy. I thought I was in heaven.
I was intimately familiar with my computer. All my programs were in
object code with no documentation whatsoever. At that point, a friend of
mine, Rufus, turned me on to a language called FORTH.
Being an interesting language and very powerful, I typed in the whole
compiler in hex and adapted it to work on my system. Once I got Forth
up, I wrote a line editor in it. I then used the line editor to write a
screen editor. With the screen editor, I rewrote Forth in Forth. The
language compiled itself.
From working with Forth (which is as much a religion as a programming
language) I learned both good and bad habits. Forth is a write only
language and is almost impossible to read even with the best of
documentation. On the other hand, it is as close to the machine as you
can get in a high level language.
After opening up a computer store in 1984, it became time to make the
jump from CP/M to the DOS world. Turbo Pascal offered an interesting
solution. They had both a CP/M and DOS compiler. This meant that
programs I wrote would run on both machines. The thing that struck me
about Pascal was that I could read it better than Forth, and I didn't
even know the language. Not only that, but I could follow the programs
that other people wrote and incorporate their code into my programs.
The more programs I wrote, the more I came to appreciate a language that
was reader friendly. I could manage my programs much easier without
having to remember so much. Other people could follow what I was doing
easier.
The important thing I learned was that readability is very important in
a program. The more complex the program, the more important readability
becomes.
One of the main design factors in the MarxMenu language is readability.
I could have used short names for my commands and it's not like I like
to type. I'm still on just two fingers here. Its just that descriptive
names are so much more meaningful when putting simple processes together
to create complex processes.
The point (finally) is, when creating variable names, or procedure
names, use long meaningful names. It may take more typing, but it takes
a lot less thinking and remembering later on. Consider the following
example in choosing variable names.
Computer Tyme MarxMenu Users Manual Page 38
_______________________________________________________________
Var KlingonsDestroyedInBattle
Var K
In the above example, it is obvious which one tells you more about what
information is stored in the variable.
USE COMMENTS LIBERALLY USE COMMENTS LIBERALLY USE COMMENTS LIBERALLY
Even though MarxMenu is easy to read, it still should be commented. The
examples that come with this disk do not have as many comments as they
should. Don't do as I do, do as I say. I'm lazy and a bad example.
Comments are not compiled in your MRX files and cost you nothing at
execution time. In order to make commenting easy, I have provided three
separate comment commands. Learn these commands first.
Every menu should include a title comment. This should include the name
and phone number of the person who wrote it. If you have a problem with
a menu and you send it to me, I expect a title comment. That way I can
call you about it.
Comment
====================================================================
This comment was created by Marc Perkel 1-417-866-1222
Last Updated: 01-28-90
This form of comment block is better than using ';' because not using ;
allows you to turn your word wrap feature on and do some professional
looking editing in the comment block. This kind of comment block should
be at the beginning of each and every menu you create.
The top and bottom bars are for looks only and are not necessary to the
comment. I strongly encourage you to use bars and do things for looks
in source code. Looks are very important and you should put as much
care into your comments as you do in writing a business letter.
If you learn MarxMenu well, your source code may be part of your next
job interview as you move up the corporate ladder. So you want it to
look good.
By the way, if you upload your menus to my bulleten board, I expect a
comment block at the top of your menu with your phone number so I can
get back to you.
====================================================================
EndComment
Computer Tyme MarxMenu Users Manual Page 39
_______________________________________________________________
INDENT YOUR CODE INDENT YOUR CODE INDENT YOUR CODE
As programs get more complex, it gets harder to match the IFs with the
ELSEs and the ENDIFs. This is where indenting comes in. It creates a
logical grouping of statements and you can easily see what goes with
what.
Procedure IfDemo
IF <condition>
<statement>
<statement>
ELSE
<statement>
<statement>
WHILE <condition>
<statement>
<statement>
ENDWHILE
<statement>
ENDIF
<statement>
EndProc
You can easily see how this helps you follow what you are writing. Now
here's a new trick. If you are using an IF, and plan to use an ELSE and
an ENDIF, on the line under the IF statement, type in your ELSE and
ENDIF lines. Then go back and insert your statements in between these
lines. This will help you avoid forgetting the ENDIF or getting mixed up
as to which IF matches which ELSE.
A similar trick can be done with parens and brackets. When typing a left
paren, type the matching right paren with it. Then fill in the code you
want to put inside the parens or brackets.
FOR DUPLICATE TASKS, USE PROCEDURES FOR DUPLICATE TASKS, USE PROCEDURES FOR DUPLICATE TASKS, USE PROCEDURES
As menus become longer and more complex, many times you are duplicating
a process that you already have written. Although it is easy to copy a
block of code, it is better to create a procedure.
With procedures, the process is put in one place and is given a name.
Preferably a long meaningful name. Once this procedure is defined and
named, it can be used as if it were part of the MarxMenu language. This
makes menus smaller and easier to read. It is also a way for you to
combine small processes into large processes. Procedures can be built
using other procedures.
Once you have a process figured out and working in a procedure, the
whole process becomes a black box with a name that you can use
elsewhere. The whole process is reduced down to a name that just works!
Computer Tyme MarxMenu Users Manual Page 40
_______________________________________________________________
Another advantage of procedures is that if circumstances change and the
procedure needs to be modified, you only make a change one place in your
menus, and everything that uses that procedure is automatically changed.
This makes menu maintenance easier.
DON'T PROGRAM YOURSELF INTO A CORNER DON'T PROGRAM YOURSELF INTO A CORNER DON'T PROGRAM YOURSELF INTO A CORNER
Using the above techniques will allow you to write very complex menu
systems. Failing to use these techniques can limit what you can
accomplish. There is a term called "programming yourself into a corner"
which refers to a program that is so poorly written, that it can't be
modified to accommodate changes and improvements.
The height of your programming abilities depends on the foundation on
which they are built. You must avoid rushing to the top without first
creating a firm foundation on which to build. Good technique is the
foundation for good programming. You will have to learn it eventually,
it is more efficient to do it right than it is to do it over.
Adopting good programming habits reminds me of my favorite light bulb
joke:
Q. How many psychologists does it take to change a light bulb?
A. Only one, but the light bulb has to want to change.
A WORD TO WRITERS AND REVIEWERS A WORD TO WRITERS AND REVIEWERS A WORD TO WRITERS AND REVIEWERS
MarxMenu is a multi-level product fulfilling the needs of a large
variety of computer users. It is difficult to compare this product on a
feature to feature basis. This is because MarxMenu has about 10 times as
many features as any other menu system. These features allow this
product to target a very broad variety of computer users, from the
novice user, who will only use the LEVEL1 menu, to large companies with
hundreds of file servers controlled through the MarxMenu language.
One common mistake that writers make when evaluating MarxMenu, is in the
area of ease of use. If you are looking for ease of use, stick with the
simple menus and the self-configuring menus such as the LEVEL1 example.
By looking at it this way, MarxMenu will be as easy to use as any other
menus system out there and can be compared for similar features. Even
though MarxMenu supports complex commands, it is not necessary to use
them in simple menus.
If you are doing a comparative review, please let me know on what basis
you are making comparisons. This way I can assist you by providing you
accurate information in the area of your interest. If you are looking
for simple, I can show you simple; if you are looking for power, I can
show you power.
Computer Tyme MarxMenu Users Manual Page 41
_______________________________________________________________
On the other hand, if you are reviewing power tools and network
utilities, you might want to look at the Network Survival Kit and not
just MarxMenu. So if you have a copy of only this program, give me a
call and I'll get you the latest and greatest.
In addition to our software, we also have color prints and color slides
available as well as product literature and sample reviews. These are
available to make your job easier and help you make those deadlines.
MarxMenu tends to be best reviewed as a long article rather than a short
one. It is very good if you have a lot of space to fill. With a long
article, you can get really in depth with what MarxMenu is able to do.
Any publication which reviews any of my products gets a site license to
that product whether I like the review or not. Our position is that if
you are using MarxMenu yourself, you will get to know it better.
So far, as of the date I write this, no writer has written an article
about MarxMenu that I feel covered what this product is really capable
of doing. Consider this a challenge.
Any questions you have about any of my products, feel free to call. The
main thing I ask is that you get the product name, price, our address,
and our phone number right.
USING MARXHELP USING MARXHELP USING MARXHELP
MarxHelp is a TSR pop-up help program for MarxMenu. It acts as an online
reference guide to all of the MarxMenu commands. MarxHelp only takes 8k
of ram and is very useful while writing your MarxMenu applications.
To load MarxHelp type MARXHELP at the command line. Then if you want to
pop-up an index press Shift-F3. The Shift-F2 key will repeat your last
help topic and Shift-F1 will look up the word your cursor is on.
To get more help on MarxMenu type MarxHelp /?. If you need to unload
MarxHelp from memory, type MarxHelp /U.
MarxHelp comes with the Computer Tyme Network Survival Kit. It can also
be downloaded from our support BBS. It does not come bundled with the
single user version.
Computer Tyme MarxMenu Users Manual Page 42
_______________________________________________________________
PRINTING THE EXAMPLE FILES PRINTING THE EXAMPLE FILES PRINTING THE EXAMPLE FILES
MarxMenu comes with several example programs from simple to complex. The
first thing to do is print the sample menus and study them. Start with
the easy ones. You may never need to use any of the more complex ones,
but if you do, a large variety of advanced techniques are demonstrated.
By studying the sample menus, and comparing them to this manual, it
should be fairly easy to become productive writing your own menus.
MARXMENU COMMANDS MARXMENU COMMANDS MARXMENU COMMANDS
MarxMenu contains a rich set of commands. They are listed here
alphabetically and by command category. You don't have to learn them all
so don't let the size of the list scare you.
In the following command list, words contained within ( ) are command
parameters that must be included after the menu command. If the
parameter is not required, it will be contained in [ ]. The numeric
range for the <column> parameter is 1 - 80 decimal, and for the <row>
parameter the range is 1 - 25, 43, or 50 decimal depending on how many
lines your monitor displays.
| (Vertical Bar) | (Vertical Bar) | (Vertical Bar)
Forces MarxMenu interpretation under an OnKey Command. If not for the |
(Vertical Bar), the command under an OnKey would be written to a batch
file. The | is only used under OnKey commands.
Example:
OnKey 'S'
|password 'hello' 3 4
ECHO Type EXIT to return to menu
COMMAND.COM
OnKey 'X'
|If UpperCase( ReadEnv( 'USERNAME' ) ) = 'SUPERVISOR'
SYSCON
|Else
| SecurityBreach( 'You do not have access to this function!' )
|EndIf
Category: Misc
Computer Tyme MarxMenu Users Manual Page 43
_______________________________________________________________
( : Operator ( : Operator ( : Operator
Starts logical interpreter grouping.
Used to force evalution of an expression.
Example:
2 * 3 + 2 evaluates to 8
2 * ( 3 + 2 ) evaluates to 10
Category: Misc
) : Operator ) : Operator ) : Operator
Ends logical interpreter grouping.
See Also: (
Category: Misc
* : Operator * : Operator * : Operator
Multiplies two numbers.
Category: Math, Float
+ : Operator + : Operator + : Operator
Adds two numbers or two strings.
Example:
"Hello" + " " + "World" = "Hello World"
2 + 2 = 4
Category: Math, String, Float
- : Operator - : Operator - : Operator
Subtracts two numbers.
Category: Math, Float
/ : Operator / : Operator / : Operator
Divides two numbers.
Category: Math, Float
< : Operator < : Operator < : Operator
Less Than - Compares two numbers or strings.
Category: Math, String, Float
Computer Tyme MarxMenu Users Manual Page 44
_______________________________________________________________
<= : Operator <= : Operator <= : Operator
Less Than or Equal - Compares two numbers or strings.
Category: Math, String, Float
<> : Operator <> : Operator <> : Operator
Not Equal - Compares two numbers or strings.
Category: Math, String, Float
= : Operator = : Operator = : Operator
Equal - Compares two numbers or strings.
Category: Math, String, Float
> : Operator > : Operator > : Operator
Greater Than - Compares two numbers or strings.
Category: Math, String, Float
>= : Operator >= : Operator >= : Operator
Greater Than or Equal - Compares two numbers or strings.
Category: Math, String, Float
%MenuFileName : String %MenuFileName : String %MenuFileName : String
This returns the name of the current menu file including the complete
path. It can be used under an OnKey statement to edit the current menu
as follows:
Example:
OnKey 'E'
EDIT %MenuFileName
Category: String
Abs : Number Abs : Number Abs : Number
Returns the absolute value of a number. The absolute value is the value
of the number without the sign.
Example:
Abs(-6) returns 6
Category: Math, Float
Computer Tyme MarxMenu Users Manual Page 45
_______________________________________________________________
Alias Alias Alias
Alias <name> = <string>
This is a compiler level text substitution command. When <name> is
defined as <string> whenever you use <name> its the same to the compiler
as if <string> were typed there.
Example:
Alias TwoPlusThree = "(2 + 3)"
.
.
.
2 * TwoPlusThree = 10
.
Writeln TwoPlusThree
Writeln TwoPlusThree is the same as Writeln (2 + 3)
Category: Misc
And : Operator And : Operator And : Operator
Returns logical And if operators are boolean; or bitwise And if
operators are numeric.
Category: Math, Boolean
Apr : Number Apr : Number Apr : Number
April, returns the number 4.
Category: MonthName
ArcTan (Radians) : Real ArcTan (Radians) : Real ArcTan (Radians) : Real
Returns the ArcTangent of a real.
Category: Math, Float
Aug : Number Aug : Number Aug : Number
August, returns the number 8.
Category: MonthName
Computer Tyme MarxMenu Users Manual Page 46
_______________________________________________________________
Bat (string) Bat (string) Bat (string)
Used to write a line to the batch file the same way OnKey does. All the
same rules apply. The batch file is created when the menu exits.
MarxMenu exits with ErrorLevel 0 unless some other value has been
specified using the ExitCode command.
Example:
BAT "command /c dir a:"
ExitMenu
See Also: OnKey
Category: Execution
BatFileName : String BatFileName : String BatFileName : String
Returns the name of the batch file that MarxMenu would create if
MarxMenu were to create a batch file automatically.
Category: String
BigShadow BigShadow BigShadow
Selects big shadow type. This is the default shadow.
See Also: SmallShadow, ShadowPosition, ShadowColor
Category: Display
Black : Number Black : Number Black : Number
Returns the number 0.
Category: Color
BlankMessage (string) BlankMessage (string) BlankMessage (string)
When the screen blanks out, this one line message is displayed. If
BlankMessage is not set, the date and time will be displayed.
See Also: ConsolePos
Category: String
BlankTime (minutes) BlankTime (minutes) BlankTime (minutes)
Sets the number of minutes before the screen blanks out to prevent
screen burn. Since this is not a resident program, screen blanking is
only active while the menu system is active. Setting BlankTime to 0
prevents screen blanking.
Example:
Set ConsolePos
Category: Display
Computer Tyme MarxMenu Users Manual Page 47
_______________________________________________________________
BlockBox BlockBox BlockBox
Selects block type box for menu borders.
See Also: SingleLineBox, DoubleLineBox, CustomBox, NoBoxBorder
Category: Display
Blue : Number Blue : Number Blue : Number
Returns the number 1.
Category: Color
BoxBorderColor (forecolor,backcolor) BoxBorderColor (forecolor,backcolor) BoxBorderColor (forecolor,backcolor)
Sets colors for box border.
Category: Display
BoxHeader (string) BoxHeader (string) BoxHeader (string)
Sets the center header message for the next box displayed. This command
is used before the DrawBox command.
Example:
BoxHeader ' Main Choices '
DrawBox (25,6,30,9)
See Also: BoxHeaderLeft, BoxHeaderRight
See Also: BoxFooter, BoxFooterLeft, BoxFooterRight
Category: Display
BoxHeaderLeft (string) BoxHeaderLeft (string) BoxHeaderLeft (string)
Sets the left header message for the next box displayed. This command is
used before the DrawBox command.
Example:
BoxHeaderLeft ' Main Choices '
DrawBox (25,6,30,9)
See Also: BoxHeader, BoxHeaderRight
See Also: BoxFooter, BoxFooterLeft, BoxFooterRight
Category: Display
Computer Tyme MarxMenu Users Manual Page 48
_______________________________________________________________
BoxHeaderRight (string) BoxHeaderRight (string) BoxHeaderRight (string)
Sets the right header message for the next box displayed. This command
is used before the DrawBox command.
Example:
BoxHeaderRight ' Main Choices '
DrawBox (25,6,30,9)
See Also: BoxHeader, BoxHeaderLeft
See Also: BoxFooter, BoxFooterLeft, BoxFooterRight
Category: Display
BoxHeaderColor (forecolor,backcolor) BoxHeaderColor (forecolor,backcolor) BoxHeaderColor (forecolor,backcolor)
Sets colors for the box headers and box footers.
Category: Display
BoxFooter (string) BoxFooter (string) BoxFooter (string)
Sets the center footer message for the next box displayed. This command
is used before the DrawBox command.
Example:
BoxFooter ' Main Choices '
DrawBox (25,6,30,9)
See Also: BoxHeader, BoxHeaderLeft, BoxHeaderRight
See Also: BoxFooterLeft, BoxFooterRight
Category: Display
BoxFooterLeft (string) BoxFooterLeft (string) BoxFooterLeft (string)
Sets the left footer message for the next box displayed. This command is
used before the DrawBox command.
Example:
BoxFooterLeft ' Main Choices '
DrawBox (25,6,30,9)
See Also: BoxHeader, BoxHeaderLeft, BoxHeaderRight
See Also: BoxFooter, BoxFooterRight
Category: Display
Computer Tyme MarxMenu Users Manual Page 49
_______________________________________________________________
BoxFooterRight (string) BoxFooterRight (string) BoxFooterRight (string)
Sets the right footer message for the next box displayed. This command
is used before the DrawBox command.
Example:
BoxFooterRight ' Main Choices '
DrawBox (25,6,30,9)
See Also: BoxHeader, BoxHeaderLeft, BoxHeaderRight
See Also: BoxFooter, BoxFooterLeft
Category: Display
BoxInsideColor (forecolor,backcolor) BoxInsideColor (forecolor,backcolor) BoxInsideColor (forecolor,backcolor)
Sets colors for box interior.
Category: Display
Brown : Number Brown : Number Brown : Number
Returns the number 7.
Category: Color
BW40 : Number BW40 : Number BW40 : Number
Returns the number 0. Relates to the DOS Mode BW40 command.
Category: Video
BW80 : Number BW80 : Number BW80 : Number
Returns the number 2. Relates to the DOS Mode BW80 command.
Category: Video
CapsColor (forecolor,backcolor) CapsColor (forecolor,backcolor) CapsColor (forecolor,backcolor)
Setting CapsColor allows capital letters and numbers to be a different
color than the rest of the text. This is used with the UseArrows command
to show which character is the one that selects the options in the
window. CapsColor is reset after any TextColor command, so be sure to
use CapsColor AFTER TextColor commands.
For this option the numbers 0 - 9 and some punctuation characters are
considered capitals.
See Also: DrawBox
Category: Display
CapsLock : Boolean CapsLock : Boolean CapsLock : Boolean
Returns true if caps lock is on.
Category: System
Computer Tyme MarxMenu Users Manual Page 50
_______________________________________________________________
Chain (MenuName) Chain (MenuName) Chain (MenuName)
This command will load a new menu. Unlike Jump, MarxMenu stays in
memory. The screen is not cleared. If the new menu has exactly the same
global variables, the contents of all global variables is retained.
Chain allows for a very quick transfer from one menu to another.
Example:
Chain ('USER') ;Chains to USER.MNU
Category: Execution
Char (number) : String Char (number) : String Char (number) : String
Converts a number into a one character string.
Example:
Write (Char(65)) ;This will display 'A'
Category: String
ChDir (string) ChDir (string) ChDir (string)
Changes directories. The variable FileResult can be tested to see if it
was successful. ChDir can also be used to change drives.
Example:
ChDir( 'C:\HOME\MARXMENU' )
ChDir( 'B:' ) ; Will make drive B: the current drive
Category: File
CleanFileName (string) : String CleanFileName (string) : String CleanFileName (string) : String
Returns the full path name or directory name of a string. It also
removes occurrences of a '\\' in the string. Thus the command: String =
CleanFileName('a:\' + '\main.mnu') sets String to 'A:\MAIN.MNU'.
CleanFileName also removes extra ending '\' and capitalizes the path.
Category: String
ClearLine [char] ClearLine [char] ClearLine [char]
Clears the current line in the current window. The optional parameter is
for the decimal number of the IBM graphics character. If [char] is
present, the line will be filled with the character.
Examples:
ClearLine ;Clears screen with blanks
ClearLine 205 ;Clears screen with char 205
Category: Display
Computer Tyme MarxMenu Users Manual Page 51
_______________________________________________________________
ClearScreen [char] ClearScreen [char] ClearScreen [char]
Clears the screen. The optional parameter is the decimal number
equivalent for an IBM graphics character. If [char] is present, the
screen will be filled with [char].
Examples:
ClearScreen ;Clears screen with blanks
ClearScreen 177 ;Clears screen with char 177
Category: Display
ClearScreenFirst (on/off) ClearScreenFirst (on/off) ClearScreenFirst (on/off)
Used in conjunction with Execute. If on, will clear the screen before
running the program.
Example:
OnKey 'D'
|ClearScreenFirst On
|Execute 'C:\DM.COM'
The default is ON.
Category: Execution
ClearScreenOnExit (on/off) ClearScreenOnExit (on/off) ClearScreenOnExit (on/off)
Controls whether or not the screen is cleared on menu exit. Default on.
Category: Display
ClockColor (forecolor,backcolor) ClockColor (forecolor,backcolor) ClockColor (forecolor,backcolor)
Sets colors for the on screen clock.
Category: Display
ClockMode ClockMode ClockMode
ClockMode is a variable whose bits control the format of the on screen
clock when it is used.
ClockMode Bits:
---------------
0 24 hour mode
1 AmPm On
2 Show Seconds
3 UpperCase
4 3 char month
5 3 char Day of Week
6 Show Day of Week
7 Dash = 0 Slash = 1 MM-DD-YY or MM/DD/YY
8 Long Date
Bit 0 on sets hours display to 24 hour mode.
Computer Tyme MarxMenu Users Manual Page 52
_______________________________________________________________
Bit 1 turns on the Am/Pm display.
Bit 2 on controls if time is shown as HH:MM:SS or just HH:MM.
Bit 3 shows date in only upper case.
Bit 4 on shows month in 3 characters.
Bit 5 shows Day of week as 3 characters.
Bit 6 controls if Day of week is displayed.
Bit 7 controls if date is shown as MM-DD-YY or MM/DD/YY.
Bit 8 shows date in text. (October 3, 1990).
Default ClockMode is 326.
Category: Display
ClockPos (column,row) ClockPos (column,row) ClockPos (column,row)
Puts a clock on the screen at location (column,row). The command
ClockPos 0 0 turns the clock off.
Category: Display
ClosePrinter ClosePrinter ClosePrinter
In MarxMenu the printer is just another text file. Closing the printer
is not required for ordinary printing. If you are changing printers you
need to run ClosePrinter before changing the printer name. The printer
is automatically opened by MarxMenu any time you print anything.
If you are running Windows or DesqView, closing the printer allows other
programs to access the printer. So if you are running under any
multitasking shell, be sure to close the printer when you are done with
it.
If you are using a network like Novell, ClosePrinter will end the print
job and send it to the print queue. This avoids the need to wait for
print capture timouts to take effect.
Closing the printer is good programming practice and will help you stay
out of trouble. It's like what your mother taught you. "When you're done
with something, put it away."
See Also: OpenPrinter, PrinterName
Category: Printer
Computer Tyme MarxMenu Users Manual Page 53
_______________________________________________________________
ClusterSize <drive> : Number ClusterSize <drive> : Number ClusterSize <drive> : Number
Returns cluster size in bytes.
Example:
Writeln (ClusterSize 'C')
ClusterSize only looks at the first character of the string for the
drive letter.
Category: System
CmdLine : String CmdLine : String CmdLine : String
System string variable that returns the rest of the command line after
the menu name.
Category: String
CO40 : Number CO40 : Number CO40 : Number
Returns the number 1. Relates to the DOS Mode CO40 command.
Category: Video
CO80 : Number CO80 : Number CO80 : Number
Returns the number 3. Relates to the DOS Mode CO80 command.
Category: Video
ColorScreen : Boolean ColorScreen : Boolean ColorScreen : Boolean
Returns true if screen is a color screen. Note: Running MODE BW80 will
cause ColorScreen to return false.
Example:
If ColorScreen
;Color
TextColor( White, Blue )
Else
;Monochrome
TextColor( White, Black )
EndIf
Category: Video
Computer Tyme MarxMenu Users Manual Page 54
_______________________________________________________________
Comment Comment Comment
Starts a Comment Block. All text is ignored until EndComment is
encountered.
Example:
Comment
=======================================
Everything between Comment and EndComment is ignored.
=======================================
EndComment
See Also: EndComment
Category: Misc
Console (On/Off) Console (On/Off) Console (On/Off)
The command Console Off will disable access to the console.
Category: Display
ConsoleBorderColor (Color,Color) ConsoleBorderColor (Color,Color) ConsoleBorderColor (Color,Color)
Sets the color of the console border.
Example:
See Also: ConsolePos
Category: Display
ConsoleHeaderColor (Color,Color) ConsoleHeaderColor (Color,Color) ConsoleHeaderColor (Color,Color)
Sets the color of the console header.
See Also: ConsolePos
Category: Display
ConsoleInsideColor (Color,Color) ConsoleInsideColor (Color,Color) ConsoleInsideColor (Color,Color)
Sets the color of the console inside.
See Also: ConsolePos
Category: Display
Computer Tyme MarxMenu Users Manual Page 55
_______________________________________________________________
ConsolePos (column,row) ConsolePos (column,row) ConsolePos (column,row)
Sets the coordinates of the pop-up console menu.
Example:
ConsoleBorderColor( White,Blue )
ConsoleHeaderColor( Yellow,Blue )
ConsoleInsideColor( Yellow,Blue )
ConsolePos( 5,5 ) ; Column 5, Row 5
Category: Display
Const Const Const
Creates a constant.
See Also: Var, Shared, Qualifier
Category Variable
Cos (Radians) : Real Cos (Radians) : Real Cos (Radians) : Real
Returns the CoSine of a real.
Category: Math, Float
CurrentEnvironment CurrentEnvironment CurrentEnvironment
CurrentEnvironment selects the current environment for use with
environment access commands.
See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
See Also: ParentEnvironment MasterEnvironment
Category: Environment
CurrentWindow : Number CurrentWindow : Number CurrentWindow : Number
Returns the number of the current window. All windows are given a unique
number.
See Also: SetTopWindow
Category: Display
Cursor (On/Off) Cursor (On/Off) Cursor (On/Off)
MarxMenu automatically turns the cursor on for certain kinds of input.
Using Cursor Off prevents MarxMenu from turning the cursor on. Cursor On
reverses this and allows MarxMenu to turn the cursor on when needed.
Category: Display
Computer Tyme MarxMenu Users Manual Page 56
_______________________________________________________________
CustomBox (String) CustomBox (String) CustomBox (String)
Selects a Box border using an 8 character string to define the sides and
the corners.
Example:
CustomBox ('12345678') ;This will help you figure out what
;position matches which side.
See Also: SingleLineBox, DoubleLineBox, BlockBox, NoBoxBorder
Category: Display
Cyan : Number Cyan : Number Cyan : Number
Returns the number 3.
Category: Color
DateString : String DateString : String DateString : String
Returns the current date in MM-DD-YY format.
Category: Time, String
Day : Number Day : Number Day : Number
Returns the day of the month.
Category: Time
DayOfWeek : Number DayOfWeek : Number DayOfWeek : Number
Returns the day of the week.
0=SUNDAY
1=MONDAY
2=TUESDAY
3=WEDNESDAY
4=THURSDAY
5=FRIDAY
6=SATURDAY
Category: Time
Dec : Number Dec : Number Dec : Number
December, Returns the number 12.
Category: MonthName
Computer Tyme MarxMenu Users Manual Page 57
_______________________________________________________________
Delete (string,pos,count) Delete (string,pos,count) Delete (string,pos,count)
Deletes characters from string starting at pos for count.
Example:
String = 'ABCDEFGH'
Delete(String,2,3)
This leaves a String containing 'ABFGH'
If count exceeds the length of the string, the string is truncated at
pos.
Another use of Delete is to delete elements of an array.
Delete (Array,Position,Count)
This works exactly like the delete command for strings. It delete
elements of an array beginning at Position for Count elements. The
NumberOfElements is adjusted accordingly.
Example:
MyArray[1] = "ONE"
MyArray[2] = "TWO"
MyArray[3] = "THREE"
MyArray[4] = "FOUR"
Delete( MyArray,2,2 )
;MyArray now contains..
MyArray[1] = "ONE"
MyArray[2] = "FOUR"
Category: String, Array
DelFile (Name) DelFile (Name) DelFile (Name)
Deletes a file by name. FileResult returns a 0 if the file existed and
the delete was successful.
Example:
DelFile( 'C:\NOTES\READ.ME' )
If FileResult = 0
Writeln( 'C:\NOTES\READ.ME was succesfully deleted!' )
Else
Writeln( 'C:\NOTES\READ.ME was un-succesfully deleted!' )
EndIf
Category: File
Computer Tyme MarxMenu Users Manual Page 58
_______________________________________________________________
Dispose (Variable) Dispose (Variable) Dispose (Variable)
This command reclaims memory used by a string variable, file variable,
or an array. If you are doing a lot of data manipulation, you might want
to reclaim memory space used by arrays you are done with. The disposed
variable becomes an untyped variable.
Example:
Loop( 20 )
MyArray[LoopIndex] = LoopIndex
If (MyArray[LoopIndex] Mod 2) = 0 ;Check to See Also: if number is odd or even
Writeln( 'MyArray[' + Str( LoopIndex ) + '] is an EVEN number.' );
Else
Writeln( 'MyArray[' + Str( LoopIndex ) + '] is an EVEN number.' );
EndIf
EndLoop
Dispose( MyArray ) ;We're finished with the array so reclaim its memory space.
Category: Memory, Array
DosVersion : Number DosVersion : Number DosVersion : Number
Returns the major DOS version number.
Category: System
DosVersionString : String DosVersionString : String DosVersionString : String
Returns the DOS version number as a 4 character string. This function
always returns 2 places past the decimal point. The form of the string
is: #.##
Example
Writeln DosVersionString ;prints 4.01
Category: System, String
DosWindow (on/off) DosWindow (on/off) DosWindow (on/off)
When you set DosWindow on, MarxMenu will not drop out of the menu system
when you use the Execute command. It will give you a display of the DOS
screen within the current window. The program you execute must be a
well-behaved program like DIR or COPY or some of the other DOS commands
that talk to the screen through standard file handles.
Category: Execution
DoubleLineBox DoubleLineBox DoubleLineBox
Selects double line box.
See Also: SingleLineBox, BlockBox, CustomBox, NoBoxBorder
Category: Display
Computer Tyme MarxMenu Users Manual Page 59
_______________________________________________________________
DrawBox (column,row,width,height) DrawBox (column,row,width,height) DrawBox (column,row,width,height)
Draws a box on the screen. The (column) and (row) are the upper left
corner, (width) and (height) is the box size.
Example:
Explode On
Shadow On
DoubleLineBox
BoxHeaderColor( Yellow,Red )
BoxBorderColor( White, Red )
BoxInsideColor( Yellow,Red )
InverseColor( Black, Gray )
CapsColor( Black, Red )
BoxHeader = ' << Main Menu >> '
DrawBox( 30,10,40,8 )
DrawBox also creates a logical layer for several display variables.
These variable include TextColor, InverseColor, CapsColor. It is
important to use these color control commands AFTER the DrawBox command
in order to properly restore the colors of the previous DrawBox.
If you call up a box and when it finishes it messes up the colors of the
previous box, you probably used color control commands BEFORE the
DrawBox instead of AFTER.
Category: Display
Drives : Number Drives : Number Drives : Number
Returns the number of drives. This includes drive names that can be
substituted. Most of the time the answer is 5. This relates to your
LastDrive = command in your CONFIG.SYS file.
Category: System
DvAppNumber : Number DvAppNumber : Number DvAppNumber : Number
Returns the DesqView application number or window number.
Category: DesqView
DvFrame (Handle,On/Off) DvFrame (Handle,On/Off) DvFrame (Handle,On/Off)
Turns the DesqView border frame on or off.
Category: DesqView
DvFreeze (Handle) DvFreeze (Handle) DvFreeze (Handle)
Freezes a program. The program stops executing.
See Also: DvUnFreeze, DvPifExecute, DvLastHandle
Category: DesqView
Computer Tyme MarxMenu Users Manual Page 60
_______________________________________________________________
DvHide (Handle) DvHide (Handle) DvHide (Handle)
Hides all output from program making it invisible. The program still
continues to run.
See Also: DvUnHide
Category: DesqView
DvKillTask (Handle) DvKillTask (Handle) DvKillTask (Handle)
Kills a program running under DesqView. The handle is the one returned
be DvPifExecute in DvLastHandle.
See Also: DvPifExecute
Category: DesqView
DvLastHandle : Number DvLastHandle : Number DvLastHandle : Number
Returns a number that is associated with a program running under
DesqView. This number is used to control other programs running under
DesqView. It is set by DvPifExecute.
See Also: DvPifExecute
Category: DesqView
DvLoaded : Boolean DvLoaded : Boolean DvLoaded : Boolean
Returns true if DesqView is loaded.
Category: DesqView
DvMoveWindow (Handle,X,Y) DvMoveWindow (Handle,X,Y) DvMoveWindow (Handle,X,Y)
Moves DesqView window upper left corner to position X,Y.
Category: DesqView
DvMyHandle : Number DvMyHandle : Number DvMyHandle : Number
Returns the DesqView handle of the current process.
See Also: DvLastHandle
Category: DesqView
Computer Tyme MarxMenu Users Manual Page 61
_______________________________________________________________
DvPifExecute (Pif File) DvPifExecute (Pif File) DvPifExecute (Pif File)
Executes another program under DesqView in another window. MarxMenu
stays resident in its original window. The window executes according to
the contents of the DesqView PIF file. The PIF file can be specified by
using the full name. If you leave of the extension, MarxMenu assumes the
extension DVP. If you pass a two character name, like the two characters
in the DesqView menus, then MarxMenu will add -PIF.DVP to the name. If
the PIF file is on the path, MarxMenu will find it.
Warning! DesqView must be loaded to run this command.
Example:
DvPifExecute 'BD'
DvPifExecute 'BD-PIF' ;These all execute Big DOS
DVPifExecute 'BD-PIF.DVP'
The task handle is loaded into a variable named DvLastHandle. When the
program starts, it becomes the current top program.
See Also: DvLoaded, DvLastHandle
Category: DesqView
DvResizeWindow (Handle,Width,Height) DvResizeWindow (Handle,Width,Height) DvResizeWindow (Handle,Width,Height)
Changes the size of a DesqView window.
Category: DesqView
DvSetBottom (Handle) DvSetBottom (Handle) DvSetBottom (Handle)
Sets the program associated with the handle to the bottom of the task
stack.
See Also: DvSetTop
Category: DesqView
DvSetTop (Handle) DvSetTop (Handle) DvSetTop (Handle)
Sets the program associated with the handle to be the top running task.
Using DvMyHandle allows MarxMenu to regain control after starting
another task.
Example:
DvSetTop (DvMyHandle)
See Also: DvSetBottom, DvLastHandle
Category: DesqView
Computer Tyme MarxMenu Users Manual Page 62
_______________________________________________________________
DvUnFreeze (Handle) DvUnFreeze (Handle) DvUnFreeze (Handle)
UnFreezes a program. The program starts executing again.
See Also: DvFreeze, DvPifExecute, DvLastHandle
Category: DesqView
DvUnHide (Handle) DvUnHide (Handle) DvUnHide (Handle)
Reverses the effect of DvHide making program output visable again.
See Also: DvHide
Category: DesqView
Else Else Else
Starts lines executed if a condition is not true.
See Also: If Then Endif
Category: Conditional
EndComment EndComment EndComment
Ends a comment block.
See Also: Comment
Category: Misc
EndIf EndIf EndIf
Ends an if statement.
See Also: If Else Then
Category: Conditional
EndLoop EndLoop EndLoop
Ends a loop statement.
See Also: Loop LoopIndex LoopLimit
Category: Conditional
Computer Tyme MarxMenu Users Manual Page 63
_______________________________________________________________
EndOfFile (FileVar) : Boolean EndOfFile (FileVar) : Boolean EndOfFile (FileVar) : Boolean
Returns True if you are at the end of the file.
Example:
Var In
FileAssign (In, 'C:\NOTES\READ.ME')
FileOpen (In)
While Not EndOfFile (In)
Writeln (FileReadLn (In))
EndWhile
FileClose (In)
Category: File
EndProc EndProc EndProc
Ends a Procedure.
See Also: Procedure Return
Category: Misc
EndWhile EndWhile EndWhile
Ends a While statement.
See Also: While
Category: Conditional
EnvFree : Number EnvFree : Number EnvFree : Number
Returns the free space in the selected environment.
Category: Environment
EnvSize : Number EnvSize : Number EnvSize : Number
Returns the size of the selected environment.
Example:
If EnvSize < 50
Warning( 'Your envrionment size is less than 20 bytes!!' )
Endif
Category: Environment
EraseTopWindow EraseTopWindow EraseTopWindow
Erases the last window created with DrawBox.
Category: Display
Computer Tyme MarxMenu Users Manual Page 64
_______________________________________________________________
Execute (command string) Execute (command string) Execute (command string)
This allows you to execute a program without dropping out of MarxMenu.
MarxMenu remains resident in memory and takes up approximately 100k. No
batch file will be created by MarxMenu.
This is handy if you have a small program you want to run from the menu
but don't want to allow for the time required by MarxMenu to create and
run a batch file. You can also execute some programs in a MarxMenu
window (See Also: DosWindow). You can also execute a program and examine
the return code.
This command can be placed in a progression of menu commands without any
special handling. Under an OnKey statement, you will need to enclose the
command between a begin and end statement.
Example:
OnKey 'D'
|Execute 'C:\DM.COM'
Note: If UseCommand is True or On, MarxMenu will load COMMAND.COM to
execute your command. If UseCommand is False, MarxMenu will execute your
file directly without COMMAND.COM. Using COMMAND.COM will execute
slightly slower, use 3.5k more ram, and allow you to use command lines
just like you would from the DOS prompt.
COMMAND.COM is required when running internal DOS commands like COPY or
DIR. It is also required to run batch files.
When UseCommand is off, MarxMenu will search the PATH for the executable
file.
Not using COMMAND.COM allows you to use the ReturnCode variable to get
the ERRORLEVEL from the subprogram.
The ClearScreenFirst (On/Off) controls whether MarxMenu will clear the
screen before you execute.
The PauseAfterExecute (On/Off) allows you to have a pause like the Pause
command in batch files. That way you can read the screen before it
restores the MarxMenu screen.
Category: Execution
ExistDir (directory) : Boolean ExistDir (directory) : Boolean ExistDir (directory) : Boolean
Used to test whether or not a DIRECTORY exists.
Category: File
Computer Tyme MarxMenu Users Manual Page 65
_______________________________________________________________
ExistFile : Boolean ExistFile : Boolean ExistFile : Boolean
Used to test whether or not a FILE exists.
Category: File
ExistOnPath (string) : String ExistOnPath (string) : String ExistOnPath (string) : String
Used to search the existing paths for the command to be executed by
Execute or other function. The program variable must include the full
filename.
Example:
OnKey 'D'
|Execute(ExistOnPath('DM.COM'))
If the file is not found, a null string is returned.
Category: File
ExitCode ExitCode ExitCode
This can be set so MarxMenu will return an ErrorLevel that can be used
in a batch file.
Example:
ExitCode = 100
When MarxMenu exits it will use ErrorLevel 100.
Category: Execution
ExitMenu ExitMenu ExitMenu
Causes MarxMenu to exit.
Category: Execution
Exp (Real) : Real Exp (Real) : Real Exp (Real) : Real
Returns the Exponential of a real. Inverse of Ln.
Category: Math, Float
Explode (on/off) Explode (on/off) Explode (on/off)
Turn exploding windows on/off.
Category: Display
ExplodeDelay (number) ExplodeDelay (number) ExplodeDelay (number)
Sets the speed of exploding windows. Use this command to adjust the
speed of the exploding windows. Default is 15.
Category: Display
Computer Tyme MarxMenu Users Manual Page 66
_______________________________________________________________
False : Boolean False : Boolean False : Boolean
Returns boolean False.
Category: Boolean
Feb : Number Feb : Number Feb : Number
February, Returns the number 2.
Category: MonthName
FileAppend (FileVar) FileAppend (FileVar) FileAppend (FileVar)
Opens a file for access and moves the file pointer to the end of the
file. File writes will start at the end of the file.
Category: File
FileAssign (FileVar,String) FileAssign (FileVar,String) FileAssign (FileVar,String)
Assigns a file variable to a file name. Files must be given a name
before they can be accessed.
Example: FileAssign(BatFile,'MARX.BAT')
BatFile is a variable and after the FileAssign, it becomes a file
variable. All access to the file is done using the file variable.
If an empty string is passed as the file name, MarxMenu will use the
standard console file handles.
Category: File
FileAttr (string) : Number FileAttr (string) : Number FileAttr (string) : Number
Returns file attribute. Can be used on directories also.
Category: File
FileClose (FileVar) FileClose (FileVar) FileClose (FileVar)
Closes a file and deallocates the memory space used by the file
variable.
Category: File
FileCreate (FileVar) FileCreate (FileVar) FileCreate (FileVar)
Creates a new file. If the file exists, it overwrites the old one.
Category: File
Computer Tyme MarxMenu Users Manual Page 67
_______________________________________________________________
FileDate (string) : Number FileDate (string) : Number FileDate (string) : Number
Returns file date as 32 bit integer. See Also: DOS manual for date
structure.
Category: File
FileFlush (FileVar) FileFlush (FileVar) FileFlush (FileVar)
Writes any information that is in the file buffers to disk.
Category: File
FileLog (FileVar,String) FileLog (FileVar,String) FileLog (FileVar,String)
This is like FileWriteln except that it always seeks the end of the file
and flushes its buffers after each write. Used for usage tracking.
Category: File
FileOpen (FileVar) FileOpen (FileVar) FileOpen (FileVar)
Opens a file for access. FileOpen is not needed if you are using the
ReadTextFile command. The following example copies a text file.
var Inp Out St
FileAssign(Inp,'INPUT.TXT')
FileOpen(Inp)
FileAssign(Out,'OUTPUT.TXT')
FileCreate(Out)
while not EndOfFile(Inp)
FileReadln(Inp,St)
FileWriteln(Out,St)
endwhile
FileClose(Inp)
FileClose(Out)
Category: File
FilePos (FileVar) : Number FilePos (FileVar) : Number FilePos (FileVar) : Number
Returns the current file position in bytes.
Category: File
FileReadln (FileVar) : String FileReadln (FileVar) : String FileReadln (FileVar) : String
Reads one line of an open file returning that line as a string.
Example:
Line3 = FileReadln(BatFile)
Category: File
Computer Tyme MarxMenu Users Manual Page 68
_______________________________________________________________
FileRename (Old,New) FileRename (Old,New) FileRename (Old,New)
Renames a file from old name to new. A file may be moved to a new
directory with this command.
Category: File
FileResult : Number FileResult : Number FileResult : Number
Returns result code from last file IO. Result codes are the same as
Turbo Pascal IOResult codes. These codes usually match the errors
returned in the AX register of DOS commands. 0 indicates no problem.
Category: File
FileSeek (FileVar,Number) FileSeek (FileVar,Number) FileSeek (FileVar,Number)
Moves the file pointer to a specified place in the file.
Category: File
FileSize (string) : Number FileSize (string) : Number FileSize (string) : Number
Returns size of file in bytes.
Category: File
FileWrite (FileVar,String) FileWrite (FileVar,String) FileWrite (FileVar,String)
Writes text to a file.
Category: File
FileWriteln (FileVar,String) FileWriteln (FileVar,String) FileWriteln (FileVar,String)
Writes text to a file with a carriage return and a line feed.
Category: File
FixPath FixPath FixPath
This command reads your path command and verifies that all the paths are
accessable. Any path that isn't accessable is removed from the master
environment. This can be used on network drives to eliminate searching
paths on fileservers that are no longer accessable.
Category: Environment
Floppies : Number Floppies : Number Floppies : Number
Returns number of floppy drives.
Category: System
Computer Tyme MarxMenu Users Manual Page 69
_______________________________________________________________
ForceExplosion (On/Off) ForceExplosion (On/Off) ForceExplosion (On/Off)
This changes the explosion status of a window that already exists. This
allows windows to implode that didn't explode.
Category: Display
ForceExtension (String,Ext) : String ForceExtension (String,Ext) : String ForceExtension (String,Ext) : String
This command forces a file extension on a string.
Example:
St = ForceExtension('MAIN.MNU','MRX')
This sets St equal to MAIN.MRX
Category: String
Fraction (Real) : Real Fraction (Real) : Real Fraction (Real) : Real
Returns the fractional part of a real.
Category: Math, Float
FreeDiskSpace <drive> : Number FreeDiskSpace <drive> : Number FreeDiskSpace <drive> : Number
Returns free disk space in bytes.
Example:
Writeln (FreeDiskSpace 'C')
FreeDiskSpace only looks at the first character of the string for the
drive letter.
Category: System
FreeEMS : Number FreeEMS : Number FreeEMS : Number
Returns free EMS memory in bytes.
Category: Memory
FreeMemory : Number FreeMemory : Number FreeMemory : Number
Returns the amount of free memory still available.
Category: Memory
Fri : Number Fri : Number Fri : Number
Friday, Returns the number 5.
Category: WeekDay
Computer Tyme MarxMenu Users Manual Page 70
_______________________________________________________________
GotoXY (column,row) GotoXY (column,row) GotoXY (column,row)
Move cursor to location column,row in current box.
Category: Display
Green : Number Green : Number Green : Number
Returns the number 2.
Category: Color
Grey : Number Grey : Number Grey : Number
Returns the number 7.
Category: Color
Hour : Number Hour : Number Hour : Number
Return the current hour. 24 hour format.
Category: Time
Hundredth : Number Hundredth : Number Hundredth : Number
Returns the 1/100 of a second from the system clock. Note that the
system clock timer tick is 1/18 second so don't expect a lot of accuracy
here.
Category: Time
If If If
Used for program control.
Usage:
IF (condition) THEN (statement)
IF (condition)
(statement)
(statement)
ELSE
(statement)
(statement)
ENDIF
Category: Conditional
Computer Tyme MarxMenu Users Manual Page 71
_______________________________________________________________
InactiveBox (BoxType) InactiveBox (BoxType) InactiveBox (BoxType)
This is used to select the type of box border to use when a window is
not the current window. If any inactive box type is specified, then when
you execute another DrawBox, the old window's border changes to the
inactive box type. The inactive window also loses its headers and
shadows.
Note that InActiveBox must be used BEFORE the DrawBox command.
Example:
InActiveBox (SingleLineBox) ;switches to single line box if
inactive.
InactiveBox (NoBoxBorder) ;disables InActive effect.
See Also: InactiveBoxColor
Category: Display
InactiveBoxColor (foreground,background) InactiveBoxColor (foreground,background) InactiveBoxColor (foreground,background)
Selects the color of the inactive box window. If Black on Black is
selected, (default), the inactive box color is the same as the active
box color.
Example:
BoxBorderColor Yellow Blue
InActiveBoxColor Brown Blue
See Also: InactiveBox BoxBorderColor
Category: Display
Include (MenuName) Include (MenuName) Include (MenuName)
This is used to insert the menu code from another file into the menu
that you are compiling.
Example:
Include 'DOS.MNU'
This will compile DOS.MNU into your present menu as if that whole file
were part of the menu you are working on.
This is useful if you have several menus that share common code. By
moving this common code to a separate file, and using an Include
statement, you can change the common code and update several menus at
once.
Changing an include file does not cause MarxMenu to recompile
automatically like changing the MNU does. You will have to force it to
compile your menus.
Computer Tyme MarxMenu Users Manual Page 72
_______________________________________________________________
This can be done several ways. You can type MARXCOMP (menu) or you can
just type DEL *.MRX which will cause all the menus to recompile the next
time they are run.
Category: Misc
InputString (String) InputString (String) InputString (String)
Preloads a string for the Readln command. The next Readln will have the
InputString on the screen for you to edit or accept. Once Readln
executes, InputString is cleared to a blank string.
Example:
InputString = ReadEnv('USERNAME')
YourName = Readln
Category: Keyboard, String
Insert (InsString,OrigString,Pos) Insert (InsString,OrigString,Pos) Insert (InsString,OrigString,Pos)
Inserts a string into a string.
Example:
St = 'ABCDEF'
Insert('123',St,3)
St will become 'ABC123DEF'
Category: String
InsertMode (On/Off) InsertMode (On/Off) InsertMode (On/Off)
Turns insert mode on and off for Readln commands.
Category: Keyboard
Int (Real) : Real Int (Real) : Real Int (Real) : Real
Returns the integer part of a real as a real.
Category: Math, Float
Integer (Real) : Number Integer (Real) : Number Integer (Real) : Number
Returns the integer part of a real as an integer. The fractional part is
truncated.
Category: Math, Float
InverseColor (forecolor,backcolor) InverseColor (forecolor,backcolor) InverseColor (forecolor,backcolor)
Sets colors for inverse bar used with UseArrows command.
Category: Display
Computer Tyme MarxMenu Users Manual Page 73
_______________________________________________________________
Jan : Number Jan : Number Jan : Number
January, Returns the number 1.
Category: MonthName
Jul : Number Jul : Number Jul : Number
July, Returns the number 7.
Category: MonthName
Jun : Number Jun : Number Jun : Number
June, Returns the number 6.
Category: MonthName
Jump (menu) Jump (menu) Jump (menu)
Jumps to another menu and does not return to original menu.
Category: Execution
KbdReady : Boolean KbdReady : Boolean KbdReady : Boolean
Returns true if Key is pressed.
Category: Keyboard
KeySave : String KeySave : String KeySave : String
Stores your keystrokes that you pressed to get to the menu level where
you are at. KeySave is passed to DOS using the SET KSV= command to store
your position in the menu system. To make this work, you must execute
SavePosition On.
This variable can be set by you to force MarxMenu to return to a place
in the menu other than where you are. This allows MarxMenu to suggest a
next step.
See Also: SavePosition
Category: String, Environment, Execution
KillMusic KillMusic KillMusic
This command stops the music and de-allocates the memory used by the
music buffer.
Category: Music
Computer Tyme MarxMenu Users Manual Page 74
_______________________________________________________________
LastKey : String LastKey : String LastKey : String
LastKey returns the last key that was typed at the keyboard. This can be
used after a Readln to determine if the ESC key was pressed or perhaps
the up or down arrow keys.
Sometimes after the press of an ESC key, MarxMenu wants to exit more
levels than you want it to. This can be controlled by setting LastKey =
' ' to stop the abort process.
See Also: Readln
Category: String
LBlue : Number LBlue : Number LBlue : Number
Light Blue, Returns the number 9.
Category: Color
LCyan : Number LCyan : Number LCyan : Number
Light Cyan, Returns the number 11.
Category: Color
Left (string,count) : String Left (string,count) : String Left (string,count) : String
Returns string starting at the beginning for count characters.
Example: Left('ABCDEF',3) returns 'ABC'
Category: String
Length (string) : Number Length (string) : Number Length (string) : Number
Returns the length of the string.
Category: String
LGreen : Number LGreen : Number LGreen : Number
Light Green, Returns the number 10.
Category: Color
LGrey : Number LGrey : Number LGrey : Number
Light Grey, Returns the number 8.
Category: Color
LMag : Number LMag : Number LMag : Number
Light Magenta, Returns the number 13.
Category: Color
Computer Tyme MarxMenu Users Manual Page 75
_______________________________________________________________
LMagenta : Number LMagenta : Number LMagenta : Number
Light Magenta, Returns the number 13.
Category: Color
Ln (Real) : Real Ln (Real) : Real Ln (Real) : Real
Returns the Natural Logarithm of a real.
Category: Math, Float
Loc (Procedure) Loc (Procedure) Loc (Procedure)
This returns the location of a procedure for storing in a variable. The
variable is later executed using the Run command.
See Also: Run
Category: Misc
LockWord (word) LockWord (word) LockWord (word)
Sets a default word for the console activated keyboard lock.
Category: Display
Loop Loop Loop
MarxMenu has a looping structure that lets you execute a piece of code a
specific number of times. It is used as follows:
Example:
Loop 8
Writeln 'Pass Number ' LoopIndex
EndLoop
You start with LOOP (Number) which specifies the number of times to
execute the code between LOOP and ENDLOOP. There are 2 variables
available here for loop control. LoopIndex starts at 1 and is
incremented at each EndLoop. When LoopIndex becomes greater than
LoopLimit, the loop exits. LoopIndex and LoopLimit refer to the
innermost loop.
As loops are nested LoopIndexes and LoopLimits are kept in two arrays;
LoopIndexStack and LoopLimitStack. There is also a variable called
LoopLevel which points to the current loop parameters.
Thus:
LoopIndex is the same as LoopIndexStack[LoopLevel]
LoopLimit is the same as LoopLimitStack[LoopLevel]
You may therefore access outer loop parameters through the loop stacks.
For instance LoopIndexStack[LoopLevel - 1] would refer to the second
innermost loop index. LoopIndexStack[1] refers to the outermost loop.
Computer Tyme MarxMenu Users Manual Page 76
_______________________________________________________________
The loop variables can be read and written to so you can adjust the
looping parameters while inside the loop. You can even adjust the
parameters of outer loops.
See Also: EndLoop LoopIndex LoopLimit
Category: Conditional
LoopIndex LoopIndex LoopIndex
Returns the loop you are in.
See Also: Loop EndLoop LoopLimit
Category: Conditional
LoopLimit LoopLimit LoopLimit
Returns the upper limit of the loop you are in.
See Also: Loop EndLoop LoopIndex
Category: Conditional
LRed : Number LRed : Number LRed : Number
Light Red returns the number 12.
Category: Color
Mag : Number Mag : Number Mag : Number
Magenta, Returns the number 5.
Category: Color
Magenta : Number Magenta : Number Magenta : Number
Magenta, Returns the number 5.
Category: Color
Mar : Number Mar : Number Mar : Number
March, Returns the number 3.
Category: MonthName
MarxVersion : String MarxVersion : String MarxVersion : String
Returns the version number of the MarxMenu you are running.
Category: String
Computer Tyme MarxMenu Users Manual Page 77
_______________________________________________________________
MasterEnvironment MasterEnvironment MasterEnvironment
MasterEnvironment selects the Master Environment for use with
environment access commands.
See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
See Also: CurrentEnvironment ParentEnvironment
Category: Environment
Max (Num,Num) : Num Max (Num,Num) : Num Max (Num,Num) : Num
Returns the largest of two numbers or strings.
Category: Math, String, Float
May : Number May : Number May : Number
May, Returns the number 5.
Category: MonthName
Mem (seg,ofs) : Number Mem (seg,ofs) : Number Mem (seg,ofs) : Number
Returns byte at memory location seg:ofs.
Category: Memory
MemSize : Number MemSize : Number MemSize : Number
Returns total memory size in K. (640 = 640k)
Category: Memory
MemW (seg,ofs) : Number MemW (seg,ofs) : Number MemW (seg,ofs) : Number
Returns word at memory location seg:ofs.
Category: Memory
MenuKeyBuffer MenuKeyBuffer MenuKeyBuffer
This is an internal MarxMenu variable. It is where the environment
variable KSV= is read. Characters in this string variable are treated as
if someone had typed them from the keyboard.
This variable can be set to blank in order to override the effects of
SET KSV= or can be set to a different value in order to automatically
make selections as if they were typed in.
See Also: SavePosition, KeySave
Category: Keyboard
Computer Tyme MarxMenu Users Manual Page 78
_______________________________________________________________
Mid (string,pos,count) : String Mid (string,pos,count) : String Mid (string,pos,count) : String
Returns a string starting at pos for count.
Example:
Mid('ABCDEFG',2,3) returns 'CDE'
Category: String
Min (Num,Num) : Num Min (Num,Num) : Num Min (Num,Num) : Num
Returns the smallest of two numbers or strings.
Category: Math, String, Float
MinorDosVersion : Number MinorDosVersion : Number MinorDosVersion : Number
Returns the minor DOS version number.
Category: System
Minute : Number Minute : Number Minute : Number
Returns the current minute.
Category: Time
Mod : Operator Mod : Operator Mod : Operator
Returns the remainder of the division of two numbers.
Category: Math
ModifyPath ModifyPath ModifyPath
The MarxMenu directory should be in the search path. This is because if
you change directories, MarxMenu may not be able to find the menu files.
MarxMenu will now test the PATH= environment variable before it writes
the batch file to execute a program. If the MarxMenu path is not
included, MarxMenu will add the path to the Master Environment if it
can.
If for some reason you don't want to allow MarxMenu to modify the master
environment, use the command:
ModifyPath Off
Category: Environment
Mon : Number Mon : Number Mon : Number
Monday, Returns the number 1.
Category: WeekDay
Computer Tyme MarxMenu Users Manual Page 79
_______________________________________________________________
Mono : Number Mono : Number Mono : Number
Returns the number 7. Relates to the DOS Mode MONO command.
Category: Video
Month : Number Month : Number Month : Number
Returns current month.
Category: Time
Mouse Mouse Mouse
MarxMenu normally uses the mouse if present. If you don't want to use
the mouse you can use the command:
Mouse Off
To turn the mouse back on type:
Mouse On
The mouse is actually switched on and off at the point when MarxMenu
waits at the keyboard for a keypress.
Category: MouseControl
MouseHorizontal (Number) MouseHorizontal (Number) MouseHorizontal (Number)
Controls the horizontal sensitivity of the mouse. The larger the number,
the less sensitive the mouse. Default is 25.
See Also: MouseVertical, Mouse
Category: MouseControl
MouseVertical (Number) MouseVertical (Number) MouseVertical (Number)
Controls the vertical sensitivity of the mouse. The larger the number,
the less sensitive the mouse. Default is 15.
If you are on a network and want to control the mouse sensitivity
individually, you can set some environment strings as follows:
Set MouseX=15
Set MouseY=25
Then in your menu you would include:
If ReadEnv('MouseX') > ''
MouseHorizontal = Value(ReadEnv('MouseX')
Endif
Computer Tyme MarxMenu Users Manual Page 80
_______________________________________________________________
If ReadEnv('MouseY') > ''
MouseVertical = Value(ReadEnv('MouseY')
Endif
See Also: MouseHorizontal, Mouse
Category: MouseControl
MoveWindow (Horizontal,Vertical) MoveWindow (Horizontal,Vertical) MoveWindow (Horizontal,Vertical)
Moves top window. If (Horizontal) is negative motion is left. If
<Vertical> is negative, motion is up.
Category: Display
MxCmd : String MxCmd : String MxCmd : String
This is an internal string variable that it written to the environment
variable MXCMD. This variable can be written to control what MarxMenu
will write to the Shell Environment. If this variable is written to, it
overrides anything that MarxMenu automatically writes.
Category: Environment, String, Execution
NetworkVersion : Boolean NetworkVersion : Boolean NetworkVersion : Boolean
Returns true if you are running the network version of MarxMenu.
Category: Misc
NextWord (String) : String NextWord (String) : String NextWord (String) : String
This command returns the next logical word of a string variable and
removes the string from the original string.
Example:
StringA = 'one two three'
StringB = NextWord(StringA)
StringB contains 'one'
StringA contains 'two three'
Category: String
No : Boolean No : Boolean No : Boolean
Returns the boolean false.
Category: Boolean
Computer Tyme MarxMenu Users Manual Page 81
_______________________________________________________________
NoBoxBorder NoBoxBorder NoBoxBorder
Use this command if you don't want a border around the menus.
See Also: SingleLineBox, DoubleLineBox, BlockBox, CustomBox
Category: Display
NoExit NoExit NoExit
Prevents ESC key from allowing you to exit menu. To exit, you must
execute the ExitMenu command. This could be password protected.
See Also: ExitMenu
Category: Execution
Not : Operator Not : Operator Not : Operator
Returns logical Not if operators are boolean; or bitwise Not if
operators are numeric.
Category: Math, Boolean
NotesLeft : Num NotesLeft : Num NotesLeft : Num
NotesLeft returns the number of notes left in the music buffer to play.
The music buffer is self adjusting and can store days worth of music.
Category: Music
NotesPlayed : Num NotesPlayed : Num NotesPlayed : Num
Returns the number of notes played. If NotesLeft ever reaches 0,
NotesPlayed also is set to 0.
Category: Music
Nov : Number Nov : Number Nov : Number
November, Returns the number 11.
Category: MonthName
NovCloseSemaphore (Name) NovCloseSemaphore (Name) NovCloseSemaphore (Name)
This closes semaphore Name. If there are no other users using this
semaphore, it is deleted.
Category: Novell
NovConnection : Number NovConnection : Number NovConnection : Number
This returns the logical connection number to the network. A zero
indicates that you are not connected.
Category: Novell
Computer Tyme MarxMenu Users Manual Page 82
_______________________________________________________________
NovConsoleOperator : Boolean NovConsoleOperator : Boolean NovConsoleOperator : Boolean
This returns true if the user has Console Operator priviledges. This can
come in handy when you are trying to determine who gets access to the
command line.
Category: Novell
NovDefaultServer : String NovDefaultServer : String NovDefaultServer : String
Returns the name of the default file server.
Category: Novell
NovGroupsMembers (Group,Array) NovGroupsMembers (Group,Array) NovGroupsMembers (Group,Array)
This reads all the members of Group and puts them into an array.
Category: Novell, Array
NovInGroup (Group) : Boolean NovInGroup (Group) : Boolean NovInGroup (Group) : Boolean
Return true if you are in the group.
Category: Novell
NovLogin (Name,Password) NovLogin (Name,Password) NovLogin (Name,Password)
This logs you into a file server. It is different than the Novell's
login program in that it doesn't execute any login scripts. It merely
gets you in. You can include the preferred server with the name.
Example:
NovLogin ('TYME/MARC','PASSWORD')
The variable NovResult is set to 0 if sucessful.
Note: If you are using Netware 3.0 or 3.1 you will have to go to the
server console and type:
SET ALLOW UNENCRYPTED PASSWORDS = ON
Category: Novell
NovLoginName (Connection) : String NovLoginName (Connection) : String NovLoginName (Connection) : String
This returns the login name of the user at any specified connection.
This can also be used to see who else is on the network.
Category: Novell
Computer Tyme MarxMenu Users Manual Page 83
_______________________________________________________________
NovLogout NovLogout NovLogout
This logs you off the server. Warning! Make sure that you are running
MarxMenu from a local drive and not the server you are logging out of.
MarxMenu needs access to overlays within MARXMENU.EXE and a Logout can
cut off access.
Category: Novell
NovMapDrive (Drive,Directory) NovMapDrive (Drive,Directory) NovMapDrive (Drive,Directory)
This will map a drive letter to a directory like the Novell MAP
command does. You may specify volume names and server names.
Example:
NovMapDrive ('J','TYME2/SYS:PUBLIC\DOS')
Mapping a drive to a nul string ('') deletes the drive map.
Category: Novell
NovMyLoginName : String NovMyLoginName : String NovMyLoginName : String
This returns the login name of the user.
Category: Novell
NovMyPassword (Password) : Boolean NovMyPassword (Password) : Boolean NovMyPassword (Password) : Boolean
Novell won't let you read the password, but it will let you guess and
tell you if you're right. This routine returns true if the password
passed is the correct password.
Category: Novell
NovOpenSemaphore (Name,Value) NovOpenSemaphore (Name,Value) NovOpenSemaphore (Name,Value)
This opens semaphore Name and assigns it an initial value. If the
semaphore already exists, it does nothing.
Category: Novell
NovPreferredServer : String NovPreferredServer : String NovPreferredServer : String
Returns the name of the preferred file server. This is set with the
NovSetPreferredServer command.
Category: Novell
NovPrimaryServer : String NovPrimaryServer : String NovPrimaryServer : String
Returns the name of the primary file server. This is the one you first
logged into.
Category: Novell
Computer Tyme MarxMenu Users Manual Page 84
_______________________________________________________________
NovReadGroups (Name,Array) NovReadGroups (Name,Array) NovReadGroups (Name,Array)
This reads all the groups that Name belongs to and puts them into an
array.
Category: Novell, Array
NovReadSecurityEquals (Name,Array) NovReadSecurityEquals (Name,Array) NovReadSecurityEquals (Name,Array)
This reads all the security equivalences that Name belongs to and puts
them into an array. (This includes groups).
Category: Novell, Array
NovResult : Number NovResult : Number NovResult : Number
NovResult is a variable like FileResult that returns the success status
of the previous Novell system call. A zero generally indicates success.
Category: Novell
NovSemaphoreTimeOut NovSemaphoreTimeOut NovSemaphoreTimeOut
This variable controls the amount of time (in 1/18 seconds) that
MarxMenu will wait for the value of a semaphore to become not negative.
The initial value is 50.
Category: Novell
NovSemaphoreUsers (Name) : Number NovSemaphoreUsers (Name) : Number NovSemaphoreUsers (Name) : Number
This returns the number of users that have the semaphore open.
Category: Novell
NovSemaphoreValue (Name) : Number NovSemaphoreValue (Name) : Number NovSemaphoreValue (Name) : Number
This returns the value of a semaphore.
Category: Novell
NovServers (Array) NovServers (Array) NovServers (Array)
This command returns a string array of the file servers you are
connected to.
Category: Novell, Array
NovSetPreferredServer (Server) NovSetPreferredServer (Server) NovSetPreferredServer (Server)
Sets the preferred file server. Passing a '' will switch you back to the
default file server.
Category: Novell
Computer Tyme MarxMenu Users Manual Page 85
_______________________________________________________________
NovSignalSemaphore (Name) NovSignalSemaphore (Name) NovSignalSemaphore (Name)
This increments the value of a semaphore. It is used to indicate that
you are done with a resource and makes it available for the next user.
Category: Novell
NovStationAddress : String NovStationAddress : String NovStationAddress : String
This returns the stations internetwork address.
Example:
254:41 where 254 is the network number and 41 is the node number.
Category: Novell
NovUserInGroup (Name,Group) : Boolean NovUserInGroup (Name,Group) : Boolean NovUserInGroup (Name,Group) : Boolean
This is used to test if other users are in a group. Returns true is the
specified user is in the specified group.
Category: Novell
NovWaitOnSemaphore (Name) : Boolean NovWaitOnSemaphore (Name) : Boolean NovWaitOnSemaphore (Name) : Boolean
This decrements the value of a semaphore and if the value is zero or
more, returns true. If the value of the semaphore is negative, it
returns false. This is used to indicate that you are out of whatever you
are testing for.
Category: Novell
NumberOfElememts (array) : Number NumberOfElememts (array) : Number NumberOfElememts (array) : Number
This function returns the number of elements in the array.
Category: Array
NumLock : Boolean NumLock : Boolean NumLock : Boolean
Returns true if Num Lock is on.
Category: System
Oct : Number Oct : Number Oct : Number
October, Returns the number 10.
Category: MonthName
Off : Boolean Off : Boolean Off : Boolean
Returns False.
Category: Boolean
Computer Tyme MarxMenu Users Manual Page 86
_______________________________________________________________
On : Boolean On : Boolean On : Boolean
Returns True.
Category: Boolean
OnKey (char) OnKey (char) OnKey (char)
When char is selected, the line(s) following are executed up to the next
OnKey or end of file. This means that they are written to a BATCH file.
Example:
Onkey 'W'
cd\wordstar
ws
cd\menu
In the above example if 'W' is selected, MarxMenu will create a
temporary batch file containing all the lines under the OnKey command.
All the lines under an OnKey are written literally to the batch file
with few exceptions. All leading and trailing blanks are stripped.
String variables are evaluated and their value passed if the name of the
string variable starts with a '%'.
If a line begins with a '|' (vertical bar), the line is interpreted
rather than written to a batch file. If a '^Label' is used under an
OnKey, a jump is made to the 'Label' and interpretation is resumed. This
is commonly used to jump to a submenu.
Any OnKey statement that causes a batch file to be written to will cause
the menu to exit. MarxMenu normally will exit with ErrorLevel 0 unless
an ExitCode is set.
The first blank line under an OnKey ends what that OnKey command does.
Category: Conditional
OnScreenOnly (On/Off) OnScreenOnly (On/Off) OnScreenOnly (On/Off)
This allows you to restrict selections to only what is actually on the
screen. Hidden OnKey commands will not execute if this is set on. This
allows you to limit user selection to the choices on the screen.
Category: Conditional
Computer Tyme MarxMenu Users Manual Page 87
_______________________________________________________________
OpenPrinter OpenPrinter OpenPrinter
This command opens the printer device. It is not necessary to use this
command in that it is done automatically whenever you print. But, if you
are running under a multitasking shell like Windows, it will reserve the
printer for your task.
If the printer is locked, or if you have specified a file name that
can't be created, the variable FileResult will contain the DOS error
code (usually 5 for access denied). A FileResult of 0 indicates success.
See Also: ClosePrinter, FileResult
Category: Printer
OptionSwitch (String1,String2) : Boolean OptionSwitch (String1,String2) : Boolean OptionSwitch (String1,String2) : Boolean
This command tests if String1 contains the option switch String2. If it
does, it will remove the switch from String1.
Example:
String1 = 'Test /A/B/C'
HasB = OptionSwitch(String1,'B')
HasB will be true.
String1 will contain 'Test /A/C'
Category: String
Or : Operator Or : Operator Or : Operator
Returns logical Or if operators are boolean; or bitwise Or if operators
are numeric.
Category: Math, Boolean
Ord (Char) : Number Ord (Char) : Number Ord (Char) : Number
Returns the numeric value of an ascii character.
Category: String
Computer Tyme MarxMenu Users Manual Page 88
_______________________________________________________________
OverLay (MenuName) OverLay (MenuName) OverLay (MenuName)
Overlay loads another menu as if that menu were a procedure of the
current menu. After the overlaid menu exits, control is returned to the
calling menu at the next line after the overlay command.
Like the Chain command, Overlay is very fast and doesn't require
MarxMenu to be reloaded.
Example:
Overlay 'SUBMENU'
I have also added some crude music to MarxMenu. This allows you to play
simple tunes while your menu is running. The tunes become a background
task and are interrupt driven. This allows you to play music while doing
other things.
Category: Execution
ParallelPorts : Number ParallelPorts : Number ParallelPorts : Number
Returns number of parallel ports.
Category: System
ParamStr (Num) : String ParamStr (Num) : String ParamStr (Num) : String
Returns the DOS parameter string from the command line. The 0 parameter
is MARXMENU.EXE. The 1 parameter is the name of the menu file you are
using. This is like the %1 %2 %3 ... in batch file parameters.
Category: String
ParentEnvironment ParentEnvironment ParentEnvironment
ParentEnvironment selects the parent environment for use with
environment access commands.
See Also: ReadEnv SetEnv ReadEnvironment ShellEnvironment
See Also: CurrentEnvironment MasterEnvironment
Category: Environment
Password (Pswd,column,row) Password (Pswd,column,row) Password (Pswd,column,row)
This command opens up a password box at row and column. The user must
type the password correctly before the command will execute. The
password is case sensitive.
Example:
OnKey 'X'
|PassWord('shell',4,3)
COMMAND.COM
Category: Conditional
Computer Tyme MarxMenu Users Manual Page 89
_______________________________________________________________
Path : String Path : String Path : String
Returns the current path.
Category: String
PauseAfterExecute (On/Off) PauseAfterExecute (On/Off) PauseAfterExecute (On/Off)
If on, this command causes the message "Press any key to return to
MarxMenu..." to appear after an execute command is executed.
See Also: Execute:
Category: Execution
Pi : Real Pi : Real Pi : Real
Returns the value of Pi to 18 digits.
Category: Math, Float
PickFile (FileSpec,column,row,height) : String PickFile (FileSpec,column,row,height) : String PickFile (FileSpec,column,row,height) : String
Allows you to display a directory of files on the screen from a menu.
Normally used to display a list of files for the user to choose from.
Could be used in a command to load a word processor or database. Allows
selection of the file to be loaded by the word processor or database
program. The filename can be passed to a percent variable placed in the
batch file executing the application. See example files on MarxMenu
distribution disk.
Example: %FileName = PickFile('C:\WORDSTAR\*.DOC',3,4,17)
Notice: The use of a variable with a name that starts with a '%' allows
the choice to be passed to a batch file for execution.
The three numbers represent the column and row of the upper left corner
of the box and the height of the box. All DrawBox commands can be used
here to control the looks of the PickFile window. This includes the
BoxHeader command.
Category: String
Computer Tyme MarxMenu Users Manual Page 90
_______________________________________________________________
PickMany(SourceArray,DestinationArray) PickMany(SourceArray,DestinationArray) PickMany(SourceArray,DestinationArray)
PickMany displays a string array in the current window and allows you to
choose as many lines as you want. The chosen lines go into
DestinationArray.
When the window appears, the space bar toggles the marked status of the
line. The right arrow sets the marked status and the left arrow resets
the marked status. Ctrl-Right-Arrow marks all lines, Ctrl-Left-Arrow
unmarks all lines. The return key accepts the selection and exits. The
ESC key aborts.
If using a mouse, the left button toggles the mark on the current line.
The right button accepts and exits.
If no selections are made, the DestinationArray is empty. If ESC is
pressed, the DestinationArray is left unchanged. You can test LastKey to
see what was pressed.
Category: String, Array
PickOne (Array) : String PickOne (Array) : String PickOne (Array) : String
This command displays an array in the current window and lets you pick a
line and returns the chosen line.
Category: String, Array
PickPosition : Number PickPosition : Number PickPosition : Number
The variable PickPosition works with the PickOne command. PickPosition
returns the number of which element in the array was picked.
Category: String, Array
Port (number) : Number Port (number) : Number Port (number) : Number
Returns the value at the port.
Category: Memory
Pos (substring,string) : Number Pos (substring,string) : Number Pos (substring,string) : Number
Finds position of substring in string. If substring isn't found, Pos
returns 0.
Example:
pos('CD','ABCDE') returns 2
Category: String
Power (Real,Real) : Real Power (Real,Real) : Real Power (Real,Real) : Real
Raises a real to a given power.
Category: Math, Float
Computer Tyme MarxMenu Users Manual Page 91
_______________________________________________________________
Pred (number) : Number Pred (number) : Number Pred (number) : Number
Returns number minus 1.
Category: Math
Print (string) Print (string) Print (string)
Prints string to the printer with no CR or LF. If there is an error
printing, the error is returned in FileResult.
Category: Printer
PrinterName (string) PrinterName (string) PrinterName (string)
Sets the file name for the printer to use. The default name is PRN.
Other common printer names include: LPT1, LPT2, LPT3, and AUX. You can
also use filenames to direct printer output to a file.
See Also: ClosePrinter
Category: Printer
Println (String) Println (String) Println (String)
Prints string to the printer with CR and LF.
See Also: Print
Category: Printer
Procedure (name) Procedure (name) Procedure (name)
This word begins the definition of a newly named procedure. A procedure
is like a subroutine. Once the procedure is defined, all you have to do
to call the procedure is use its name. The procedure definition is
terminated by the command EndProc.
Example:
Procedure SelectFile
BoxHeaderColor ForeColor BackColor
BoxBorderColor Cyan Mag
BoxInsideColor Yellow Mag
InverseColor Yellow Red
%ExecSt = PickFile FileType 4 5 17
EndProc
Whenever we use the word SelectFile in the menu, all the lines of the
procedure SelectFile will execute.
See Also: EndProc, Return
Category: Misc
Computer Tyme MarxMenu Users Manual Page 92
_______________________________________________________________
PullMenu (on/off) PullMenu (on/off) PullMenu (on/off)
Controls the behavior of pull down menus. Set to on if using
them. Default is Off.
Category: Display
Qualifier Qualifier Qualifier
Used to create qualifiers.
See Also: Var, Constant, Shared
Category: Variable
Random : Number Random : Number Random : Number
The Random command returns random numbers between 0 and +2,000,000,000.
(2^31). The algorithm has been checked for good uniformity and takes
advantage of re-seeding itself from random events like the timer
interrupt and keyboard input.
Category: Math
ReadEnv (string) : String ReadEnv (string) : String ReadEnv (string) : String
Returns the environment string specified.
Example: PathString = ReadEnv('PATH')
See Also: SetEnv ReadEnvironment ShellEnvironment
See Also: CurrentEnvironment ParentEnvironment MasterEnvironment
Category: Environment
ReadEnvironment (array) ReadEnvironment (array) ReadEnvironment (array)
Reads all environment variables into an array.
Example:
Var Env
ReadEnvironment( Env )
; Env[1] will be the first environment string and
; Env[NumberOfElememts(Env)] will be the last. A variable that is
; set is LongestLine. LongestLine contains the length of the
; longest string variable read.
Writeln( 'Your current environment variables are:' )
Loop( NumberOfElements( Env ) )
Writeln( Env[LoopIndex] )
EndLoop
Writeln
Writeln( 'Your Environment Size is :', Str( EnvSize ) )
Writeln( 'You are using :', Str( EnvSize - EnvFree ), ' bytes.' )
Writeln( 'You have :,' Str( EnvFree ), ' bytes free.' )
Computer Tyme MarxMenu Users Manual Page 93
_______________________________________________________________
See Also: SetEnv ReadEnv ShellEnvironment
See Also: CurrentEnvironment ParentEnvironment MasterEnvironment
Category: Environment, Array
ReadKey : String ReadKey : String ReadKey : String
Returns the character that is input from the keyboard.
Example:
Var Key
Repeat
Writeln( 'Press the <ESC> key to exit this program.' )
Key = ReadKey
Until Key = Esc
Category: Keyboard
Readln : String Readln : String Readln : String
Reads a string from the keyboard.
Example:
Customer.Name = Readln
Customer.Number = Value (Readln) ;Converts to an numerical value
Customer.State = UpperCase (ReadLn)
Category: Keyboard, String
ReadTextFile (FileName,Array) ReadTextFile (FileName,Array) ReadTextFile (FileName,Array)
This command reads a text file into a string array. It also sets the
variable LongestLine to the length of the longest line in the file.
Example:
Var Docs
ReadTextFile('MARXMENU.DOC',Docs)
;After the read, Docs[1] becomes the first line of the file.
;Docs[NumberOfElements(Docs)] becomes the last line.
Loop( NumberOfElements( Docs ) )
; Convert each line to its uppercase equivalent
Docs[LoopIndex] = UpperCase( Docs[LoopIndex] )
EndLoop
;Save the newly formatted array
WriteTextFile( 'NEWMM.DOC', Docs )
Do not use FileOpen with ReadTextFile.
Computer Tyme MarxMenu Users Manual Page 94
_______________________________________________________________
The power of the ReadTextFile and WriteTextFile have expanded. You can
now load and save arrays of any variable types, multidimensional arrays,
and mixed array types. This includes strings, numbers, and booleans.
File variables are also stored. When a file variable is stored and
reloaded the FileAssign command is not necessary.
Category: File, Array
Real (Integer) : Real Real (Integer) : Real Real (Integer) : Real
Returns the real equivalent of an integer.
Category: Math, Float
Reboot Reboot Reboot
Causes the computer to do a warm reboot.
Category: Execution
Red : Number Red : Number Red : Number
Returns the number 4.
Category: Color
ReleaseDate : String ReleaseDate : String ReleaseDate : String
Returns the MarxMenu Release Date.
Category: String
Repeat Repeat Repeat
Used for program control. Usage:
REPEAT
(statement)
(statement)
UNTIL (condition)
Example:
Var Key
Repeat
Key = ReadKey
If Key = 'A'
Bat( 'DOLIST.EXE' )
ExitMenu
EndIf
If Key = F1 Then Help
Until Key = Esc
Category: Conditional
Computer Tyme MarxMenu Users Manual Page 95
_______________________________________________________________
ResizeWindow (Horizontal Vertical) ResizeWindow (Horizontal Vertical) ResizeWindow (Horizontal Vertical)
Changes the size of the top window. The horizontal and vertical numbers
are added to the current size. Use negative numbers to shrink the
window. The top left corner stays in the same place.
Example:
DrawBox 15 5 30 15
ResizeWindow 15 5
See Also: MoveWindow
Category: Display
Return (param,param,...) Return (param,param,...) Return (param,param,...)
Exits a procedure and optionally returns parameters to the calling
procedure. It can return as many parameters as you want as long as the
calling program uses the same number of parameters. Otherwise, you will
get an "Invalid number of parameters" error.
Example:
Procedure SmallRandomNumber
{Returns a random number between 1 and 100}
var SmallRand
SmallRand = Random mod 100
Return (SmallRand + 1)
EndProc
See Also: Procedure, EndProc
Category: Misc
ReturnCode : Number ReturnCode : Number ReturnCode : Number
When you use the Execute function, a ReturnCode value is fed into this
variable when you return to the menu. The code returned is the same as
what the DOS ErrorLevel would be. This will not work if you use the
UseCommand On function because COMMAND.COM would have been loaded and
the returncode would be lost.
Category: Execution
Right (string,count) : String Right (string,count) : String Right (string,count) : String
Returns right characters of string for length count.
Example: Right('ABCDEF',3) returns 'DEF'
Category: String
Computer Tyme MarxMenu Users Manual Page 96
_______________________________________________________________
RollWindow (number) RollWindow (number) RollWindow (number)
Windows can be looked at as a stack. RollWindow will roll a previous
window to the top of the stack making the previous window the current
window.
Example:
;Make the Third window on the stack the active window
RollWindow( 3 )
;Write out message
Writeln( 'You have mail waiting!' )
;Now put the windows back
PushBackWindow( 3 )
Procedure PushBackWindow( N )
;--
;-- Will roll a window back to its original position on the stack
;-- The parameter should be the same as the parameter for the call
;-- to RollWindow ( If you use RollWindow( 3 ) then use PushBackWindow( 3 ))
;--
Loop( N )
RollWindow( N )
EndLoop
EndProc ;PushBackWindow
Category: Display
Run variable (parameters) Run variable (parameters) Run variable (parameters)
This runs a procedure that was stored in a variable.
var Y
Procedure WriteSquared (X)
Writeln (X * X)
EndProc
Example:
Y = Loc(WriteSquared)
Run Y(3) ; This will write a 9 on the screen
Warning! Don't put the variable you are running in parentheses.
Run (Y,3) ; this won't work
See Also: Loc
Category: Misc
Computer Tyme MarxMenu Users Manual Page 97
_______________________________________________________________
Sat : Number Sat : Number Sat : Number
Saturday, Returns the number 6.
Category: WeekDay
SavePosition (On/Off) SavePosition (On/Off) SavePosition (On/Off)
If SavePosition is On, MarxMenu will return to the last menu selection
you made when MarxMenu is re-entered. As you select menu layers your
keystrokes are stored in an internal string variable called KeySave. On
exit, MarxMenu writes KeySave to an environment variable KSV. On return
to MarxMenu, this variable is retrieved. The return point may be altered
by using the command KeySave = (string).
Another thing this points out is that environment variables can be used
to store information and allow MarxMenu to remember things from one
selection to another. Since MarxMenu doesn't stay memory resident, this
is the only way I have found to store information.
Category: Keyboard, Environment
ScreenHeight : Number ScreenHeight : Number ScreenHeight : Number
Returns number of rows of character on your screen.
Category: Display
ScreenWidth : Number ScreenWidth : Number ScreenWidth : Number
Returns number of columns of character on your screen.
Category: Display
ScrollLock : Boolean ScrollLock : Boolean ScrollLock : Boolean
Returns true if Scroll Lock is on.
Category: System
ScrollMove (On/Off) ScrollMove (On/Off) ScrollMove (On/Off)
This allows you to control whether or not the ScrollLock will allow you
to move the top window. Default is On.
Category: Display
Second : Number Second : Number Second : Number
Returns the current second.
Category: Time
Computer Tyme MarxMenu Users Manual Page 98
_______________________________________________________________
Security (on/off) Security (on/off) Security (on/off)
When security is on, Readln echos '*' instead of the letters that are
being typed. This is used for such things as entering passwords other
than using the password command.
Category: String
SelectPath : String SelectPath : String SelectPath : String
This command uses another program in the Computer Tyme DOS TOOLBOX
called Pick Directory to read a text into a variable. You must have
Computer Tyme Pick Directory for this feature to work.
Example:
OnKey 'B'
|%BackPath = SelectPath
cd %BackPath
backup c: a:
Category: String
Sep : Number Sep : Number Sep : Number
September, Returns the number 9.
Category: MonthName
SerialPorts : Number SerialPorts : Number SerialPorts : Number
Returns number of serial ports.
Category: System
SetArraySize (Array,Size) SetArraySize (Array,Size) SetArraySize (Array,Size)
If the array is larger than Size the array is truncated. If it is
smaller, memory is allocated for the array.
Category: Array
Computer Tyme MarxMenu Users Manual Page 99
_______________________________________________________________
SetEnv (String) SetEnv (String) SetEnv (String)
This is used to set environment strings. It can be used on the Current,
Parent, Master or Shell environment.
Example:
SetEnv ('PATH=C:\')
SetEnv ('COMSPEC=X:COMMAND.COM')
MarxMenu also allows you to select which environment you are working
with. This is done with the following commands.
CurrentEnvironment
ParentEnvironment
MasterEnvironment
ShellEnvironment
See Also: ReadEnv ReadEnvironment ShellEnvironment
See Also: CurrentEnvironment ParentEnvironment MasterEnvironment
Category: Environment
SetTopWindow (Number) SetTopWindow (Number) SetTopWindow (Number)
Selects a window by number making it the current window and moves it to
the top.
Example:
DrawBox ....
ThisWindow = CurrentWindow
DrawBox ....
DrawBox ....
SetTopWindow (ThisWindow)
See Also: CurrentWindow
Category: Display
Shadow (on/off) Shadow (on/off) Shadow (on/off)
Turn window shadows on/off.
Category: Display
ShadowColor (ForeColor,BackColor) ShadowColor (ForeColor,BackColor) ShadowColor (ForeColor,BackColor)
Sets the color of the shadow. There are actually two shadow colors.
MarxMenu stores different values for big shadows and small shadows.
See Also: BigShadow, SmallShadow, ShadowPosition, Shadow
Category: Display
Computer Tyme MarxMenu Users Manual Page 100
_______________________________________________________________
ShadowPosition (number) ShadowPosition (number) ShadowPosition (number)
Selects the shadow position around the window. A zero (default) sets the
shadow position to the bottom right sind. A one sets the shadow position
to the bottom left. Using ShadowPosition turns shadowing on so a Shadow
On command is not required.
See Also: Shadow, ShadowColor, BigShadow, SmallShadow
Category: Display
Shared Shared Shared
The key word SHARED can be used to define variables just like VAR. Any
variable defined with SHARED is passed globally to and from overlays.
The important thing is that the Shared variables must be defined exactly
the same way between the overlays. There is also a pre-defined variable
called COMMON. Technically, Shared variables are qualifiers off of
COMMON.
See Also: Var, Constant, Qualifier
Category: Variable
ShellEnvironment ShellEnvironment ShellEnvironment
ShellEnvironment selects the environment of the last COMMAND.COM in
memory for use with environment access commands. This is usually the
same as the Master Environment.
More than one COMMAND.COM is loaded when you are running a shell under
WINDOWS or DESQVIEW. When using these programs, you will want to access
the Shell Envoronment instead of the Master Environment. The Shell
Environment is the one that will run batch files.
See Also: ReadEnv SetEnv ReadEnvironment MasterEnvironment
See Also: CurrentEnvironment ParentEnvironment
Category: Environment
Shl : Operator Shl : Operator Shl : Operator
Shift left, does a binary 32 bit shift left.
Category: Math
Shr : Operator Shr : Operator Shr : Operator
Shift right, does a binary 32 bit shift right.
Category: Math
Computer Tyme MarxMenu Users Manual Page 101
_______________________________________________________________
Sin (Radians) : Real Sin (Radians) : Real Sin (Radians) : Real
Returns the Sine of a real.
Category: Math, Float
SingleLineBox SingleLineBox SingleLineBox
Selects single line box for menu borders.
See Also: DoubleLineBox, BlockBox, CustomBox, NoBoxBorder
Category: Display
SmallShadow SmallShadow SmallShadow
Selects small shadow type.
See Also: BigShadow, ShadowPosition, ShadowColor
Category: Display
Sound (on/off) Sound (on/off) Sound (on/off)
Turn sound effects on/off.
Category: Display
Sqr (Real) : Real Sqr (Real) : Real Sqr (Real) : Real
Returns the Square Root of a real.
Category: Math, Float
StandardIO StandardIO StandardIO
This tells MarxMenu to use standard Input and Output file handles for
reading the keyboard and writing to the screen.
Category: Display
Str (number) : String Str (number) : String Str (number) : String
Turns a number into a string.
Category: String
Computer Tyme MarxMenu Users Manual Page 102
_______________________________________________________________
StuffAKey (String or Number) StuffAKey (String or Number) StuffAKey (String or Number)
Stuffs a single key into the DOS keyboard buffer when MarxMenu exits.
The limit is 16 characters.
Example:
StuffAKey($3F00) ;stuff the F5 key
StuffAKey F5 ;same thing
Do not mix StuffAKey with StuffKBD. Use one or the other.
Category: Execution, Keyboard, String
StuffKBD (String) StuffKBD (String) StuffKBD (String)
Stuffs the string into the DOS keyboard buffer when MarxMenu exits. The
limit is 16 characters.
Example:
StuffKBD 'LOGOUT' + CR
Category: Execution, Keyboard, String
StuffKeyboardNow StuffKeyboardNow StuffKeyboardNow
Normally the keyboard stuffing is done as MarxMenu quits. This forces
the keyboard to be stuffed immediately.
Category: Keyboard
Succ (number) : Number Succ (number) : Number Succ (number) : Number
Returns number plus 1.
Category: Math
Suggest (Char) Suggest (Char) Suggest (Char)
Normally the UseArrows command will start in the upper left hand corner.
By using the Suggest command, you can set it to start on any menu
selection.
Example:
Suggest 'E'
Category: Display
Sun : Number Sun : Number Sun : Number
Sunday, Returns the number 0.
Category: WeekDay
Computer Tyme MarxMenu Users Manual Page 103
_______________________________________________________________
TextBackground (color) TextBackground (color) TextBackground (color)
Sets text background color.
Category: Display
TextColor (forecolor,backcolor) TextColor (forecolor,backcolor) TextColor (forecolor,backcolor)
Sets the color of text to be displayed on the screen. TextColor resets
the value of CapsColor.
Category: Display
TextMode (num) TextMode (num) TextMode (num)
Sets the video text mode.
0 = 40 column BW
1 = 40 column COLOR
2 = 80 column BW
3 = 80 column COLOR
258 = 43/50 line EGA BW
259 = 43/50 line EGA COLOR
Example:
TextMode BW80
Category: Video
TextPos : Number TextPos : Number TextPos : Number
TextPos returns the current position in a text file. This can be saved
so that you can go to the same place using TextSeek.
See Also: TextSeek
Category: File
TextSeek (Number) TextSeek (Number) TextSeek (Number)
TextSeek moves to a specific byte in a text file.
See Also: TextPos
Category: File
Then Then Then
Conditional control.
See Also: If
Category: Conditional
Computer Tyme MarxMenu Users Manual Page 104
_______________________________________________________________
Thu : Number Thu : Number Thu : Number
Thursday, Returns the number 4.
Category: WeekDay
Timer : Number Timer : Number Timer : Number
Returns the system timer.
Category: Time
TimeString : String TimeString : String TimeString : String
Returns the time in HH:MM:SS format. 24 hour.
Category: String, Time
Tone (Frequency,Duration) Tone (Frequency,Duration) Tone (Frequency,Duration)
This command plays a note at Frequency cycles per second for a period of
Duration 1/18 of a second. The reason it is in 1/18 seconds is because
there is a standard interrupt that gives me that time period. The IBM
series computers are not music oriented machines so don't throw away
your Compact Disk player.
The maximum duration is 255 1/18 of a second. Normally, MarxMenu will
create a break in between notes equal to 1/8 of the duration of the
note. If you want to eliminate the break and create a 'slur' (music
term), add 256 to the duration. This tells MarxMenu to connect the notes
without a break.
Category: Music
TotalDiskSpace <drive> : Number TotalDiskSpace <drive> : Number TotalDiskSpace <drive> : Number
Returns total disk space in bytes.
Example:
Writeln (TotalDiskSpace 'C')
TotalDiskSpace only looks at the first character of the string for
the drive letter.
Category: System
TotalEMS : Number TotalEMS : Number TotalEMS : Number
Returns total EMS memory in bytes.
Category: Memory
Computer Tyme MarxMenu Users Manual Page 105
_______________________________________________________________
Trim (string) Trim (string) Trim (string)
Trims white space from both ends of a string. White space is
blank characters and lower.
Category: String
True : Boolean True : Boolean True : Boolean
Returns boolean true.
Category: Boolean
Tue : Number Tue : Number Tue : Number
Tuesday, Returns the number 2.
Category: WeekDay
UniqueFileName : String UniqueFileName : String UniqueFileName : String
Uses the create new file call to get a filename that is different than
any other file name. It is tied to the DOS call that is used to create a
unique file name according to the rules of your operating system.
Category: File, String
Until Until Until
Conditional control.
See Also: Repeat.
Category: Conditional
UpperCase (String) : String UpperCase (String) : String UpperCase (String) : String
Return UpperCase of String
Category: String
UpperCaseOnly : Boolean UpperCaseOnly : Boolean UpperCaseOnly : Boolean
Setting UpperCaseOnly to on forces text entered with Readln or ReadKey
to upper case.
Category: String
Computer Tyme MarxMenu Users Manual Page 106
_______________________________________________________________
UseArrows UseArrows UseArrows
UseArrows tells MarxMenu that the selection will be made by moving an
inverse video bar over the selections. No parameters are required for
this command to work. It will pick the first line with a capital letter
as the first menu selection. All text in the window must be indented at
least one space and there must be one space between the end of the line
and the right wall of the window. Multiple items on the same line must
be separated by two or more spaces.
The OnKey selection is triggered by either the first capital letter in
the selection or by a number from 0 - 9 or some punctuation characters.
This number or letter will be a different color if you use the CapsColor
command. (See Also: PULL.MNU for an example).
UseArrows Off will disable this feature.
See Also: ReadKey
Category: Display
UseCommand (on/off) UseCommand (on/off) UseCommand (on/off)
Used with Execute. Will load COMMAND.COM before running the specified
program. Not as fast, because the system has to find and load
COMMAND.COM, then the specified program. The advantage is if COMMAND.COM
is loaded, it will automatically search the DOS path for the file to be
executed by the Execute command.
Example:
OnKey 'D'
|UseCommand On
|Execute 'DM'
The default is OFF.
See Also: Execute
Category: Execution
UsedDiskSpace <drive> : Number UsedDiskSpace <drive> : Number UsedDiskSpace <drive> : Number
Returns used disk space in bytes.
Example:
Writeln (UsedDiskSpace 'C')
UsedDiskSpace only looks at the first character of the string for the
dirve letter.
Category: System
Computer Tyme MarxMenu Users Manual Page 107
_______________________________________________________________
Value (string) : Number Value (string) : Number Value (string) : Number
Converts String to Number. Leading $ indicates Hex.
Category: String, Math
Var Var Var
Used to create variables.
See Also: Constant, Shared, Qualifier
Category: Variable
VideoMode : Number VideoMode : Number VideoMode : Number
Returns Current Video Mode.
Category: Video
VideoPage : Number VideoPage : Number VideoPage : Number
Returns Current Video Page.
Category: Video
ViewTextFile (Name) ViewTextFile (Name) ViewTextFile (Name)
This command lets you view a text file in the current window.
Category: Display, File
Volume (drive) Volume (drive) Volume (drive)
Returns the volume label of the specified drive.
Category: System
Wait (number) Wait (number) Wait (number)
Delay for a number of 1/100 seconds. Wait 250 delays 2 1/2 seconds.
Category: Misc
WaitOrKbdReady (Number) WaitOrKbdReady (Number) WaitOrKbdReady (Number)
This command is just like the WAIT command except the wait is aborted by
pressing any key. Time to wait is in hundredths of a second. This
command is useful when using MarxMenu to write a running demo.
Category: Keyboard
Wed : Number Wed : Number Wed : Number
Wednesday, Returns the number 3.
Category: WeekDay
Computer Tyme MarxMenu Users Manual Page 108
_______________________________________________________________
WhereX : Number WhereX : Number WhereX : Number
Returns the horizontal position of the cursor within the current window.
Category: Display
WhereXAbs : Number WhereXAbs : Number WhereXAbs : Number
Returns the horizontal screen position of the cursor.
Category: Display
WhereY : Number WhereY : Number WhereY : Number
Returns the vertical position of the cursor within the current window.
WhereYAbs : Number WhereYAbs : Number WhereYAbs : Number
Returns the vertical screen position of the cursor.
Category: Display
While While While
Used for program control. Usage:
WHILE (condition)
(statement)
(statement)
ENDWHILE
Execution stays in the while loop as long as the condition is true.
See Also: EndWhile
Category: Conditional
White : Number White : Number White : Number
Returns the number 15.
Category: Color
WindowHeight : Number WindowHeight : Number WindowHeight : Number
Returns number of rows in current window.
Category: Display
WindowWidth : Number WindowWidth : Number WindowWidth : Number
Returns number of columns in current window.
Category: Display
Computer Tyme MarxMenu Users Manual Page 109
_______________________________________________________________
Write (string) Write (string) Write (string)
Writes (string) on the screen at the current cursor position.
Category: Display
WriteCenter (string) WriteCenter (string) WriteCenter (string)
Writes (string) centered in current window.
Category: Display
Writeln (string) Writeln (string) Writeln (string)
Writes (string) on the screen followed by a CR-LF (carriage
return-line feed).
Category: Display
WritePort (port,number) WritePort (port,number) WritePort (port,number)
Writes number to port.
Category: Memory
WriteTextFile (FileName,Array) WriteTextFile (FileName,Array) WriteTextFile (FileName,Array)
This command writes a string array to a text file. Do not use FileCreate
of any other file commands with this. This command does it all.
See Also: ReadTextFile
Category: File, Array
WriteVertical (string) WriteVertical (string) WriteVertical (string)
Writes (string) vertically on the screen from the current cursor
position.
Example:
WriteVertical( 'Hello' )
;This would display
H
e
l
l
o
Category: Display
Xor : Operator Xor : Operator Xor : Operator
Returns logical Xor if operators are boolean; or bitwise Xor if
operators are numeric.
Category: Math, Boolean
Computer Tyme MarxMenu Users Manual Page 110
_______________________________________________________________
Year : Number Year : Number Year : Number
Returns current Year.
Category: Time
Yellow : Number Yellow : Number Yellow : Number
Returns the number 14.
Category: Color
Yes : Boolean Yes : Boolean Yes : Boolean
Returns True.
COMMAND CATEGORIES COMMAND CATEGORIES COMMAND CATEGORIES
Here is a breakdown of MarxMenu commands by command category. Many
MarxMenu commands are in several categories. These are the same
categories as in the MarxHelp utility.
MISC COMMANDS MISC COMMANDS MISC COMMANDS
| | (Vertical Bar)
( ( : Operator
) ) : Operator
Alias Alias
Comment Comment
EndComment EndComment
EndProc EndProc
Include Include (MenuName)
Loc Loc (Procedure)
NetworkVersion NetworkVersion : Boolean
Procedure Procedure (name)
Return Return (param,param,...)
Run Run variable (parameters)
Wait Wait (number)
Computer Tyme MarxMenu Users Manual Page 111
_______________________________________________________________
MATH COMMANDS MATH COMMANDS MATH COMMANDS
* * : Operator
+ + : Operator
- - : Operator
/ / : Operator
< < : Operator
<= <= : Operator
<> <> : Operator
= = : Operator
> > : Operator
>= >= : Operator
Abs Abs : Number
And And : Operator
ArcTan ArcTan (Radians) : Real
Cos Cos (Radians) : Real
Exp Exp (Real) : Real
Fraction Fraction (Real) : Real
Int Int (Real) : Real
Integer Integer (Real) : Number
Ln Ln (Real) : Real
Max Max (Num,Num) : Num
Min Min (Num,Num) : Num
Mod Mod : Operator
Not Not : Operator
Or Or : Operator
Pi Pi : Real
Power Power (Real,Real) : Real
Pred Pred (number) : Number
Random Random : Number
Real Real (Integer) : Real
Shl Shl : Operator
Shr Shr : Operator
Sin Sin (Radians) : Real
Sqr Sqr (Real) : Real
Succ Succ (number) : Number
Value Value (string) : Number
Xor Xor : Operator
Computer Tyme MarxMenu Users Manual Page 112
_______________________________________________________________
FLOAT COMMANDS FLOAT COMMANDS FLOAT COMMANDS
* * : Operator
+ + : Operator
- - : Operator
/ / : Operator
< < : Operator
<= <= : Operator
<> <> : Operator
= = : Operator
> > : Operator
>= >= : Operator
Abs Abs : Number
ArcTan ArcTan (Radians) : Real
Cos Cos (Radians) : Real
Exp Exp (Real) : Real
Fraction Fraction (Real) : Real
Int Int (Real) : Real
Integer Integer (Real) : Number
Ln Ln (Real) : Real
Max Max (Num,Num) : Num
Min Min (Num,Num) : Num
Pi Pi : Real
Power Power (Real,Real) : Real
Real Real (Integer) : Real
Sin Sin (Radians) : Real
Sqr Sqr (Real) : Real
STRING COMMANDS STRING COMMANDS STRING COMMANDS
+ + : Operator
< < : Operator
<= <= : Operator
<> <> : Operator
= = : Operator
> > : Operator
>= >= : Operator
%MenuFileName %MenuFileName : String
BatFileName BatFileName : String
BlankMessage BlankMessage (string)
Char Char (number) : String
CleanFileName CleanFileName (string) : String
CmdLine CmdLine : String
DateString DateString : String
Delete Delete (string,pos,count)
DosVersionString DosVersionString : String
ForceExtension ForceExtension (String,Ext) : String
InputString InputString (String)
Insert Insert (InsString,OrigString,Pos)
KeySave KeySave : String
LastKey LastKey : String
Left Left (string,count) : String
Computer Tyme MarxMenu Users Manual Page 113
_______________________________________________________________
Length Length (string) : Number
MarxVersion MarxVersion : String
Max Max (Num,Num) : Num
Mid Mid (string,pos,count) : String
Min Min (Num,Num) : Num
MxCmd MxCmd : String
NextWord NextWord (String) : String
OptionSwitch OptionSwitch (String1,String2) : Boolean
Ord Ord (Char) : Number
ParamStr ParamStr (Num) : String
Path Path : String
PickFile PickFile (FileSpec,column,row,height) : String
PickMany PickMany(SourceArray,DestinationArray)
PickOne PickOne (Array) : String
PickPosition PickPosition : Number
Pos Pos (substring,string) : Number
Readln Readln : String
ReleaseDate ReleaseDate : String
Right Right (string,count) : String
Security Security (on/off)
SelectPath SelectPath : String
Str Str (number) : String
StuffAKey StuffAKey (String or Number)
StuffKBD StuffKBD (String)
TimeString TimeString : String
Trim Trim (string)
UniqueFileName UniqueFileName : String
UpperCase UpperCase (String) : String
UpperCaseOnly UpperCaseOnly : Boolean
Value Value (string) : Number
BOOLEAN COMMANDS BOOLEAN COMMANDS BOOLEAN COMMANDS
And And : Operator
False False : Boolean
No No : Boolean
Not Not : Operator
Off Off : Boolean
On On : Boolean
Or Or : Operator
True True : Boolean
Xor Xor : Operator
Computer Tyme MarxMenu Users Manual Page 114
_______________________________________________________________
MONTHNAME COMMANDS MONTHNAME COMMANDS MONTHNAME COMMANDS
Apr Apr : Number
Aug Aug : Number
Dec Dec : Number
Feb Feb : Number
Jan Jan : Number
Jul Jul : Number
Jun Jun : Number
Mar Mar : Number
May May : Number
Nov Nov : Number
Oct Oct : Number
Sep Sep : Number
EXECUTION COMMANDS EXECUTION COMMANDS EXECUTION COMMANDS
Bat Bat (string)
Chain Chain (MenuName)
ClearScreenFirst ClearScreenFirst (on/off)
DosWindow DosWindow (on/off)
Execute Execute (command string)
ExitCode ExitCode
ExitMenu ExitMenu
Jump Jump (menu)
KeySave KeySave : String
MxCmd MxCmd : String
NoExit NoExit
Overlay OverLay (MenuName)
PauseAfterExecute PauseAfterExecute (On/Off)
Reboot Reboot
ReturnCode ReturnCode : Number
StuffAKey StuffAKey (String or Number)
StuffKBD StuffKBD (String)
UseCommand UseCommand (on/off)
DISPLAY COMMANDS DISPLAY COMMANDS DISPLAY COMMANDS
BigShadow BigShadow
BlankTime BlankTime (minutes)
BlockBox BlockBox
BoxBorderColor BoxBorderColor (forecolor,backcolor)
BoxHeader BoxHeader (string)
BoxHeaderLeft BoxHeaderLeft (string)
BoxHeaderRight BoxHeaderRight (string)
BoxHeaderColor BoxHeaderColor (forecolor,backcolor)
BoxFooter BoxFooter (string)
BoxFooterLeft BoxFooterLeft (string)
BoxFooterRight BoxFooterRight (string)
BoxInsideColor BoxInsideColor (forecolor,backcolor)
CapsColor CapsColor (forecolor,backcolor)
ClearLine ClearLine [char]
Computer Tyme MarxMenu Users Manual Page 115
_______________________________________________________________
ClearScreen ClearScreen [char]
ClearScreenOnExit ClearScreenOnExit (on/off)
ClockColor ClockColor (forecolor,backcolor)
ClockMode ClockMode
ClockPos ClockPos (column,row)
Console Console (On/Off)
ConsoleBorderColor ConsoleBorderColor (Color,Color)
ConsoleHeaderColor ConsoleHeaderColor (Color,Color)
ConsoleInsideColor ConsoleInsideColor (Color,Color)
ConsolePos ConsolePos (column,row)
CurrentWindow CurrentWindow : Number
Cursor Cursor (On/Off)
CustomBox CustomBox (String)
DoubleLineBox DoubleLineBox
DrawBox DrawBox (column,row,width,height)
EraseTopWindow EraseTopWindow
Explode Explode (on/off)
ExplodeDelay ExplodeDelay (number)
ForceExplosion ForceExplosion (On/Off)
GotoXY GotoXY (column,row)
InactiveBox InactiveBox (BoxType)
InactiveBoxColor InactiveBoxColor (foreground,background)
InverseColor InverseColor (forecolor,backcolor)
LockWord LockWord (word)
MoveWindow MoveWindow (Horizontal,Vertical)
NoBoxBorder NoBoxBorder
PullMenu PullMenu (on/off)
ResizeWindow ResizeWindow (Horizontal Vertical)
RollWindow RollWindow (number)
ScreenHeight ScreenHeight : Number
ScreenWidth ScreenWidth : Number
ScrollMove ScrollMove (On/Off)
SetTopWindow SetTopWindow (Number)
Shadow Shadow (on/off)
ShadowColor ShadowColor (ForeColor,BackColor)
ShadowPosition ShadowPosition (number)
SingleLineBox SingleLineBox
SmallShadow SmallShadow
Sound Sound (on/off)
StandardIO StandardIO
Suggest Suggest (Char)
TextBackground TextBackground (color)
TextColor TextColor (forecolor,backcolor)
UseArrows UseArrows
ViewTextFile ViewTextFile (Name)
WhereX WhereX : Number
WhereXAbs WhereXAbs : Number
WhereYAbs WhereYAbs : Number
WindowHeight WindowHeight : Number
WindowWidth WindowWidth : Number
Write Write (string)
WriteCenter WriteCenter (string)
Computer Tyme MarxMenu Users Manual Page 116
_______________________________________________________________
Writeln Writeln (string)
WriteVertical WriteVertical (string)
COLOR COMMANDS COLOR COMMANDS COLOR COMMANDS
Black Black : Number
Blue Blue : Number
Brown Brown : Number
Cyan Cyan : Number
Green Green : Number
Grey Grey : Number
LBlue LBlue : Number
LCyan LCyan : Number
LGreen LGreen : Number
LGrey LGrey : Number
LMag LMag : Number
LMagenta LMagenta : Number
LRed LRed : Number
Mag Mag : Number
Magenta Magenta : Number
Red Red : Number
White White : Number
Yellow Yellow : Number
VIDEO COMMANDS VIDEO COMMANDS VIDEO COMMANDS
BW40 BW40 : Number
BW80 BW80 : Number
CO40 CO40 : Number
CO80 CO80 : Number
Mono Mono : Number
TextMode TextMode (num)
VideoMode VideoMode : Number
VideoPage VideoPage : Number
SYSTEM COMMANDS SYSTEM COMMANDS SYSTEM COMMANDS
CapsLock CapsLock : Boolean
ClusterSize ClusterSize <drive> : Number
DosVersion DosVersion : Number
DosVersionString DosVersionString : String
Drives Drives : Number
Floppies Floppies : Number
FreeDiskSpace FreeDiskSpace <drive> : Number
MinorDosVersion MinorDosVersion : Number
NumLock NumLock : Boolean
ParallelPorts ParallelPorts : Number
ScrollLock ScrollLock : Boolean
SerialPorts SerialPorts : Number
TotalDiskSpace TotalDiskSpace <drive> : Number
UsedDiskSpace UsedDiskSpace <drive> : Number
Volume Volume (drive)
Computer Tyme MarxMenu Users Manual Page 117
_______________________________________________________________
FILE COMMANDS FILE COMMANDS FILE COMMANDS
ChDir ChDir (string)
DelFile DelFile (Name)
EndOfFile EndOfFile (FileVar) : Boolean
ExistDir ExistDir (directory) : Boolean
ExistFile ExistFile : Boolean
ExistOnPath ExistOnPath (string) : String
FileAppend FileAppend (FileVar)
FileAssign FileAssign (FileVar,String)
FileAttr FileAttr (string) : Number
FileClose FileClose (FileVar)
FileCreate FileCreate (FileVar)
FileDate FileDate (string) : Number
FileFlush FileFlush (FileVar)
FileLog FileLog (FileVar,String)
FileOpen FileOpen (FileVar)
FilePos FilePos (FileVar) : Number
FileReadln FileReadln (FileVar) : String
FileRename FileRename (Old,New)
FileResult FileResult : Number
FileSeek FileSeek (FileVar,Number)
FileSize FileSize (string) : Number
FileWrite FileWrite (FileVar,String)
FileWriteln FileWriteln (FileVar,String)
ReadTextFile ReadTextFile (FileName,Array)
TextPos TextPos : Number
TextSeek TextSeek (Number)
UniqueFileName UniqueFileName : String
ViewTextFile ViewTextFile (Name)
WriteTextFile WriteTextFile (FileName,Array)
PRINTER COMMANDS PRINTER COMMANDS PRINTER COMMANDS
ClosePrinter ClosePrinter
OpenPrinter OpenPrinter
Print Print (string)
PrinterName PrinterName (string)
Println Println (String)
Computer Tyme MarxMenu Users Manual Page 118
_______________________________________________________________
ENVIRONMENT COMMANDS ENVIRONMENT COMMANDS ENVIRONMENT COMMANDS
CurrentEnvironment CurrentEnvironment
EnvFree EnvFree : Number
EnvSize EnvSize : Number
FixPath FixPath
KeySave KeySave : String
MasterEnvironment MasterEnvironment
ModifyPath ModifyPath
MxCmd MxCmd : String
ParentEnvironment ParentEnvironment
ReadEnv ReadEnv (string) : String
ReadEnvironment ReadEnvironment (array)
SavePosition SavePosition (On/Off)
SetEnv SetEnv (String)
ShellEnvironment ShellEnvironment
TIME COMMANDS TIME COMMANDS TIME COMMANDS
DateString DateString : String
Day Day : Number
DayOfWeek DayOfWeek : Number
Hour Hour : Number
Hundredth Hundredth : Number
Minute Minute : Number
Month Month : Number
Second Second : Number
Timer Timer : Number
TimeString TimeString : String
Year Year : Number
ARRAY COMMANDS ARRAY COMMANDS ARRAY COMMANDS
Delete Delete (string,pos,count)
Dispose Dispose (Variable)
NovGroupMembers NovGroupsMembers (Group,Array)
NovReadGroups NovReadGroups (Name,Array)
NovReadSecurityEquals NovReadSecurityEquals (Name,Array)
NovServers NovServers (Array)
NumberOfElements NumberOfElememts (array) : Number
PickMany PickMany(SourceArray,DestinationArray)
PickOne PickOne (Array) : String
PickPosition PickPosition : Number
ReadEnvironment ReadEnvironment (array)
ReadTextFile ReadTextFile (FileName,Array)
SetArraySize SetArraySize (Array,Size)
WriteTextFile WriteTextFile (FileName,Array)
Computer Tyme MarxMenu Users Manual Page 119
_______________________________________________________________
MEMORY COMMANDS MEMORY COMMANDS MEMORY COMMANDS
Dispose Dispose (Variable)
FreeEms FreeEMS : Number
FreeMemory FreeMemory : Number
Mem Mem (seg,ofs) : Number
MemSize MemSize : Number
MemW MemW (seg,ofs) : Number
Port Port (number) : Number
TotalEms TotalEMS : Number
WritePort WritePort (port,number)
DESQVIEW COMMANDS DESQVIEW COMMANDS DESQVIEW COMMANDS
DvAppNumber DvAppNumber : Number
DvFrame DvFrame (Handle,On/Off)
DvFreeze DvFreeze (Handle)
DvHide DvHide (Handle)
DvKillTask DvKillTask (Handle)
DvLastHandle DvLastHandle : Number
DvLoaded DvLoaded : Boolean
DvMoveWindow DvMoveWindow (Handle,X,Y)
DvMyHandle DvMyHandle : Number
DvPifExecute DvPifExecute (Pif File)
DvResizeWindow DvResizeWindow (Handle,Width,Height)
DvSetBottom DvSetBottom (Handle)
DvSetTop DvSetTop (Handle)
DvUnFreeze DvUnFreeze (Handle)
DvUnHide DvUnHide (Handle)
CONDITIONAL COMMANDS CONDITIONAL COMMANDS CONDITIONAL COMMANDS
Else Else
Endif EndIf
EndLoop EndLoop
EndWhile EndWhile
If If
Loop Loop
LoopIndex LoopIndex
LoopLimit LoopLimit
OnKey OnKey (char)
OnScreenOnly OnScreenOnly (On/Off)
Password Password (Pswd,column,row)
Repeat Repeat
Then Then
Until Until
While While
Computer Tyme MarxMenu Users Manual Page 120
_______________________________________________________________
WEEKDAY COMMANDS WEEKDAY COMMANDS WEEKDAY COMMANDS
Fri Fri : Number
Mon Mon : Number
Sat Sat : Number
Sun Sun : Number
Thu Thu : Number
Tue Tue : Number
Wed Wed : Number
KEYBOARD COMMANDS KEYBOARD COMMANDS KEYBOARD COMMANDS
InputString InputString (String)
InsertMode InsertMode (On/Off)
KbdReady KbdReady : Boolean
MenuKeyBuffer MenuKeyBuffer
ReadKey ReadKey : String
Readln Readln : String
SavePosition SavePosition (On/Off)
StuffAKey StuffAKey (String or Number)
StuffKBD StuffKBD (String)
StuffKeyboardNow StuffKeyboardNow
WaitOrKbdReady WaitOrKbdReady (Number)
MUSIC COMMANDS MUSIC COMMANDS MUSIC COMMANDS
KillMusic KillMusic
NotesLeft NotesLeft : Num
NotesPlayed NotesPlayed : Num
Tone Tone (Frequency,Duration)
MOUSECONTROL COMMANDS MOUSECONTROL COMMANDS MOUSECONTROL COMMANDS
Mouse Mouse
MouseHorizontal MouseHorizontal (Number)
MouseVertical MouseVertical (Number)
Computer Tyme MarxMenu Users Manual Page 121
_______________________________________________________________
NOVELL COMMANDS NOVELL COMMANDS NOVELL COMMANDS
NovCloseSemaphore NovCloseSemaphore (Name)
NovConnection NovConnection : Number
NovConsoleOperator NovConsoleOperator : Boolean
NovDefaultServer NovDefaultServer : String
NovGroupMembers NovGroupsMembers (Group,Array)
NovInGroup NovInGroup (Group) : Boolean
NovLogin NovLogin (Name,Password)
NovLoginName NovLoginName (Connection) : String
NovLogout NovLogout
NovMapDrive NovMapDrive (Drive,Directory)
NovMyLoginName NovMyLoginName : String
NovMyPassword NovMyPassword (Password) : Boolean
NovOpenSemaphore NovOpenSemaphore (Name,Value)
NovPreferredServer NovPreferredServer : String
NovPrimaryServer NovPrimaryServer : String
NovReadGroups NovReadGroups (Name,Array)
NovReadSecurityEquals NovReadSecurityEquals (Name,Array)
NovResult NovResult : Number
NovSemaphoreTimeOut NovSemaphoreTimeOut
NovSemaphoreUsers NovSemaphoreUsers (Name) : Number
NovSemaphoreValue NovSemaphoreValue (Name) : Number
NovServers NovServers (Array)
NovSetPreferredServer NovSetPreferredServer (Server)
NovSignalSemaphore NovSignalSemaphore (Name)
NovStationAddress NovStationAddress : String
NovUserInGroup NovUserInGroup (Name,Group) : Boolean
NovWaitOnSemaphore NovWaitOnSemaphore (Name) : Boolean
VARIABLE COMMANDS VARIABLE COMMANDS VARIABLE COMMANDS
Qualifier Qualifier
Shared Shared
Var Var
STRING AND CHARACTER CONSTANTS STRING AND CHARACTER CONSTANTS STRING AND CHARACTER CONSTANTS
BKSP = #8
CR = #13
CRLF = #13#10
ESC = #27
FF = #12
LF = #10
Computer Tyme MarxMenu Users Manual Page 122
_______________________________________________________________
F1 = #0#59
F2 = #0#60
F3 = #0#61
F4 = #0#62
F5 = #0#63
F6 = #0#64
F7 = #0#65
F8 = #0#66
F9 = #0#67
F10 = #0#68
F11 = #0#133
F12 = #0#134
SF1 = #0#84
SF2 = #0#85
SF3 = #0#86
SF4 = #0#87
SF5 = #0#88
SF6 = #0#89
SF7 = #0#90
SF8 = #0#91
SF9 = #0#92
SF10 = #0#93
SF11 = #0#135
SF12 = #0#136
CF1 = #0#94
CF2 = #0#95
CF3 = #0#96
CF4 = #0#97
CF5 = #0#98
CF6 = #0#99
CF7 = #0#100
CF8 = #0#101
CF9 = #0#102
CF10 = #0#103
CF11 = #0#137
CF12 = #0#138
AF1 = #0#104
AF2 = #0#105
AF3 = #0#106
AF4 = #0#107
AF5 = #0#108
AF6 = #0#109
AF7 = #0#110
AF8 = #0#111
AF9 = #0#112
AF10 = #0#113
AF11 = #0#139
AF12 = #0#140
Computer Tyme MarxMenu Users Manual Page 123
_______________________________________________________________
ALT1 = #0#120
ALT2 = #0#121
ALT3 = #0#122
ALT4 = #0#123
ALT5 = #0#124
ALT6 = #0#125
ALT7 = #0#126
ALT8 = #0#127
ALT9 = #0#128
ALT0 = #0#129
CONDITIONAL STATEMENTS CONDITIONAL STATEMENTS CONDITIONAL STATEMENTS
MarxMenu has a full complement of conditional statements. They are as
follows:
IF->ELSE->ENDIF Where, IF [condition]
statement
statement
ELSE
statement
statement
ENDIF
IF->THEN Where, IF [condition] THEN statement
REPEAT->UNTIL Where, REPEAT
statement
statement
UNTIL [condition]
WHILE->ENDWHILE Where, WHILE [conditon]
statement
statement
ENDWHILE
PROCEDURE->ENDPROC PROCEDURE (name)
statement
statement
ENDPROC
LOOP->ENDLOOP LOOP (number)
statement
statement
ENDLOOP
Other Computer Tyme Software:
======================================================
The Computer Tyme Dos ToolBox... Makes DOS easier for the novice,
more powerful for the professional.
DIRECTORY MASTER is a powerful hard disk managment utility. It
brings up your hard disk files and allows you to mark selected
files so you can copy them, delete them, or move them. It also
allows you to rename files, change dates, and change attributes.
You can also run programs or set up your function keys to run
programs on selected files.
DOLIST makes being at DOS easier. It gives you full line editing,
like a word processor, for your commands. It also stores commands
so that you can re-execute them. It remembers subdirectories and
allows you to go back to them by pressing the TAB key. It offers
programmable function keys, DOS extensions, multiple execution,
and many more features you have got to have.
PICK DIRECTORY allows you to move through the directory system by
displaying a graphic tree and letting you use your arrow keys to
move around. It also lets you create, delete, rename, and hide
directories.
TEDIT (from SemWare) is a powerful, easy to use full screen
editor.
MARXTSR is a set of memory and TSR management utilities that let
you load and unload TSRs (Terminate and stay resident programs)
from memory. Utilities to list menory allocation and turn TSR's
on and off.
And many more ... Also includes is D, a fancy directory listing
program; WHEREIS, for finding stuff on you hard disk, SORT, MOVE,
FIND, FREE, PIPEDIR, VERSION, and many more.
The Dos Toolbox sells for $59.95.
======================================================
We are also selling QEdit from Semware. QEdit is a professional
editor from Semware. TEdit is a mini version of QEdit. If you
like TEdit, You'll love QEdit.
1-800-548-5353 Order Line
1-417-866-1222 Voice Line
1-417-866-1665 BBS Data line * 1200/2400 * 8N1 * ANSI or VT100
MarxMenu comes with MarxEdit and MARXTSR manager and a few goodies out of
the DOS ToolBox. The Network Survival Kit is a network version of almost
every utility I've ever written. It's sold on a per fileserver basis.
_______
____|__ | (tm)
--| | |-------------------
| ____|__ | Association of
| | |_| Shareware
|__| o | Professionals
-----| | |---------------------
|___|___| APPROVED VENDOR
==========================================
Make Check Computer Tyme Order Form LO
Payable To: 411 North Sherman Suite 300
Springfield Mo. 65802
(417) 866-1222 (800) 548-5353
Please send me Computer Tyme Software.
=============================================================
Name: ________________________________________________
Address: ________________________________________________
City/St/Zip: ________________________________________________
Phone: ________________________________________________
Computer: ________________________________________________
Got From: ________________________________________________
Comments: ________________________________________________
________________________________________________
Single User Version:
___ Enclosed is $59.95 for MarxMenu.
___ Enclosed is $59.95 for the DOS ToolBox.
___ Enclosed is $99.95 for MarxMenu, the Dos ToolBox and DM3.
Network Version (1 per file server):
___ Enclosed is $495 for Network Survival Kit.
___ Add $3.00 for Shipping and Handling.
___ I need 3 1/2 Inch Media.
=============================================================